fedora-accounts process-shell-accounts.py,1.2,1.3
Toshio Ernie Kuratomi (toshio)
fedora-extras-commits at redhat.com
Fri Aug 3 22:24:01 UTC 2007
Author: toshio
Update of /cvs/fedora/fedora-accounts
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28568
Modified Files:
process-shell-accounts.py
Log Message:
* process-shell-accounts.py: Take a backup of any home directories that are
going to be deleted.
Index: process-shell-accounts.py
===================================================================
RCS file: /cvs/fedora/fedora-accounts/process-shell-accounts.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- process-shell-accounts.py 15 Nov 2005 22:17:11 -0000 1.2
+++ process-shell-accounts.py 3 Aug 2007 22:23:58 -0000 1.3
@@ -5,6 +5,7 @@
# Add/remove home dirs.
import sys, os, shutil, urllib2, getopt, errno
+import tempfile
def chown_r(path, uid, gid):
os.chown(path, uid, gid)
@@ -34,25 +35,30 @@
src_dir = basetname
db_dir = args[1]
if not os.path.exists('/home/fedora'):
- os.makedirs('/home/fedora')
+ os.makedirs('/home/fedora')
have_users = os.listdir('/home/fedora')
need_users = {}
fh_passwd = open(src_dir + '/passwd', 'r')
+num_users = 0
while 1:
aline = fh_passwd.readline()
if not aline: break
if aline[0] != '.': continue
+ num_users += 1
+
username, userdata = aline.split(None, 1)
username = username[1:]
need_users[username] = userdata.split(':')
fh_passwd.close()
+assert num_users, "The user data file must have at least one user listed"
+
for I in maps:
os.system('makedb -o %s/%s.db %s/%s' % (db_outdir, I, src_dir, I))
if I == 'shadow':
- os.chmod('%s/%s.db' % (db_outdir, I), 0400)
+ os.chmod('%s/%s.db' % (db_outdir, I), 0400)
del_homedir = []
add_homedir = []
@@ -64,13 +70,26 @@
assert Idata[5] == ('/home/fedora/' + I)
add_homedir.append((I, '/home/fedora/' + I, int(Idata[2])))
-os.system("rm -rvf " + ' '.join(del_homedir))
+# Backup and delete home directories
+homedirs = ' '.join(del_homedir)
+backupFile = tempfile.mkstemp(suffix='.tar.gz', prefix='deleted_home_dirs.',
+ dir='/tmp/')
+backupCmd = os.popen('tar -czf - ' + homedirs, 'r')
+chunk = backupCmd.read(4096)
+while chunk:
+ os.write(backupFile[0], chunk)
+ chunk = backupCmd.read(4096)
+os.close(backupFile[0])
+backupCmd.close()
+print 'directories saved in %s' % backupFile[1]
+os.system("rm -rvf " + homedirs)
+
for username, homedir, uid in add_homedir:
os.system("cp -av /etc/skel " + homedir)
try:
- os.mkdir(homedir + '/.ssh', 0700)
+ os.mkdir(homedir + '/.ssh', 0700)
except OSError, e:
- if e[0] != errno.EEXIST: raise
+ if e[0] != errno.EEXIST: raise
chown_r(homedir, uid, uid)
os.chmod(homedir, 0755)
More information about the fedora-extras-commits
mailing list