#!/usr/bin/python # -*- coding: iso-8859-1 -*- import os, commands abcd = [ chr(i) for i in range(97, 123)] home = '/home' def get_groupe(user): cmde = 'id %s|grep eleves'%user cmdp = 'id %s|grep professeurs'%user if commands.getstatusoutput(cmde)[0] == 0: return 'eleve' if commands.getstatusoutput(cmdp)[0] == 0: return 'professeur' return None def place_droit(user, rep): dico = dict(user = user, rep = rep) drte = """setfacl -Rbk %(rep)s setfacl -PRm u:%(user)s:rwx,g::---,o::--- %(rep)s setfacl -x u:%(user)s %(rep)s/MailDir setfacl -m u:mail:r-x,g:mail:r-x %(rep)s setfacl -PRm u:mail:rwx,g:mail:rwx %(rep)s/MailDir setfacl -m g:professeurs:r-x %(rep)s setfacl -PRm g:professeurs:r-x %(rep)s/perso if [ -d %(rep)s/perso/prive ];then setfacl -x g:professeurs %(rep)s/perso/prive fi getfacl --access --absolute-names %(rep)s | setfacl -d -M- %(rep)s getfacl --access --absolute-names %(rep)s/perso | setfacl -d -M- %(rep)s/perso getfacl --access --absolute-names %(rep)s/perso/prive | setfacl -d -M- %(rep)s/perso/prive getfacl --access --absolute-names %(rep)s/profiles | setfacl -d -M- %(rep)s/profiles getfacl --access --absolute-names %(rep)s/MailDir | setfacl -d -M- %(rep)s/MailDir # pour les quotas chown -R %(user)s %(rep)s/perso """%dico drtp = """setfacl -Rbk %(rep)s setfacl -PRm u:%(user)s:rwx,g::---,o:--- %(rep)s setfacl -m u:mail:r-x,g:mail:r-x %(rep)s if [ -d %(rep)s/MailDir ];then setfacl -m u:mail:rwx,g:mail:rwx %(rep)s/MailDir fi chown -R %(user)s %(rep)s/perso """%dico grp = get_groupe(user) print "Traitement de", user, grp if grp == 'eleve': os.system(drte) return if grp == 'professeur': os.system(drtp) return for i in abcd: rep = os.path.join(home, i) print rep if not os.path.isdir(rep): continue users = os.listdir(rep) for user in users: rep2 = os.path.join(rep, user) #print user, rep2, rep place_droit(user, rep2)