diff --git a/roles/provision_homedir/templates/provision_homedir.py.j2 b/roles/provision_homedir/templates/provision_homedir.py.j2 index 07563cab82a647a84d9a39df47df86cc583419ee..1d711face7bc0a926cc0d027f318c1e875eb0a0d 100644 --- a/roles/provision_homedir/templates/provision_homedir.py.j2 +++ b/roles/provision_homedir/templates/provision_homedir.py.j2 @@ -3,7 +3,7 @@ import ldap import traceback import os import stat -#import shutil +import shutil import subprocess class ldapSearchConfig: @@ -44,17 +44,16 @@ def get_users(server): return allusers def mk_homedir(path,uidNumber,gidNumber): + skelroot = path.rsplit("/", 1)[0] + # fix this later if your common/skel is located elsewhere + skelpath = os.path.join(skelroot, 'common', 'skel') try: statinfo = os.stat(path) except OSError as e: if 'No such file or directory' in e: - os.mkdir(path,0700) + shutil.copytree(skelpath, path) statinfo = os.stat(path) - if stat.S_ISDIR(statinfo.st_mode): - if statinfo.st_gid != gidNumber or statinfo.st_uid!=uidNumber: - os.chown(path,uidNumber,gidNumber) - else: - raise Exception("users homedirectory is not a directory %s"%path) + 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 def recursive_chown(path,uidNumber,gidNumber): @@ -68,24 +67,6 @@ def recursive_chown(path,uidNumber,gidNumber): for fname in files: os.chown(os.path.join(root, fname), uidNumber, gidNumber) -def cp_skel(skelroot, path, uidNumber, gidNumber): - if skelroot is None: - # assumes NO trailing / on the home path or dead meat - skelroot = path.rsplit("/", 1)[0] - # fix this later if your common/skel is located elsewhere - skelpath = os.path.join(skelroot, 'common', 'skel') - if os.path.isdir(skelpath): - # copy the skel into the user $HOME - # os.system("/bin/cp -r %s/* %s" % (skelpath, path)) - subprocess.call(['/bin/cp', '-r', "%s/*" % skelpath, path]) - # os.system("/bin/cp %s/\.* %s" % (skelpath, path)) - subprocess.call(['/bin/cp', "%s/.*" % skelpath, path]) - # ideally use this, but it assumes 'path' does not exist - # shutil.copytree(skelpath, path) - # chown to user ownership - recursive_chown(path, uidNumber, gidNumber) - else: - raise Exception("skel path is missing %s" % skelpath) s=ldapSearchConfig() s.ldapserver="{{ ldapURI }}" @@ -103,8 +84,7 @@ for user in users: path=mnthome+"/"+users[user].entry[homeDirEntry][0].rsplit("/",1)[1] else: path=users[user].entry[homeDirEntry][0] - mk_homedir(None, path,int(users[user].entry['uidNumber'][0]),int(users[user].entry['gidNumber'][0])) - cp_skel(None, 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