Skip to content
Snippets Groups Projects
Commit a4398c19 authored by Chris Hines's avatar Chris Hines
Browse files

Merge branch 'homedir_provisioning' into 'master'

two fixes

1) provision_homedir was not correctly chowning directories
2) provision_homedir should skip existing directories for speed

See merge request !96
parents b9b27458 a32a6366
No related branches found
No related tags found
1 merge request!96two fixes
......@@ -53,6 +53,7 @@ def mk_homedir(path,uidNumber,gidNumber):
if 'No such file or directory' in e:
shutil.copytree(skelpath, path)
statinfo = os.stat(path)
os.chown(path,uidNumber,gidNumber)
recursive_chown(path, uidNumber, gidNumber)
# adapted from http://stackoverflow.com/questions/5994840/how-to-change-the-user-and-group-permissions-for-a-directory-by-name
......@@ -67,6 +68,16 @@ def recursive_chown(path,uidNumber,gidNumber):
for fname in files:
os.chown(os.path.join(root, fname), uidNumber, gidNumber)
def check_homedir(path,uidNumber,gidNumber):
try:
si = os.stat(path)
if si.st_uid != uidNumber or si.st_gid != gidNumber:
raise Exception("user home %s uid %d != %d, gid %d != %d mismatch" % (path,si.st_uid,uidNumber,si.st_gid,gidNumber))
return True
except:
return False
s=ldapSearchConfig()
s.ldapserver="{{ ldapURI }}"
......@@ -84,7 +95,8 @@ for user in users:
path=mnthome+"/"+users[user].entry[homeDirEntry][0].rsplit("/",1)[1]
else:
path=users[user].entry[homeDirEntry][0]
mk_homedir(path,int(users[user].entry['uidNumber'][0]),int(users[user].entry['gidNumber'][0]))
if not check_homedir(path,int(users[user].entry['uidNumber'][0]),int(users[user].entry['gidNumber'][0])):
mk_homedir(path,int(users[user].entry['uidNumber'][0]),int(users[user].entry['gidNumber'][0]))
except:
print traceback.format_exc()
pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment