diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index 94306935..13e4fde5 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -21,13 +21,13 @@ Retournent None si pas d'objet trouv # Destinataires, si vide n'envoi rien To = 'fred@crans.org' -import string, os, sys, pwd +import string, os, sys from whos import aff import time, signal, getopt import affich_tools, config from lock import make_lock, remove_lock -from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles, smtpserv +from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles, smtpserv, script_utilisateur def dialog(arg) : return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg) @@ -639,7 +639,7 @@ def set_blackliste(clas) : # Commentaire c = r[2].strip() - login = pwd.getpwuid(os.getuid())[0] + login = script_utilisateur if c.split(' :')[0] != login : t[3] = login + ' : ' + c @@ -1576,7 +1576,7 @@ if __name__ == '__main__' : try : if To : # Paramètres pour le mail - From = pwd.getpwuid(os.getuid())[0] + '@crans.org' + From = script_utilisateur + '@crans.org' entete_mail = """From: Crans <%s> To: %s diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index 439efa6d..446d0b19 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -22,7 +22,7 @@ smtpserv = "localhost" # TODO : # Interdire la modif des comptes nounou -import smtplib, sre, os, random, string, time, sys, pwd +import smtplib, sre, os, random, string, time, sys import ldap, ldap.modlist import config, annuaires, iptools, chgpass, user_tests @@ -53,6 +53,7 @@ droits_possibles = [ u'Nounou', u'Apprenti', u'Mod isadm = user_tests.isadm() isdeconnecteur = user_tests.isdeconnecteur() ann_scol = config.ann_scol +script_utilisateur = user_tests.getuser() ################################################################################## ### Fonctions utiles @@ -698,7 +699,7 @@ class base_classes_crans(crans_ldap) : else : modif=', '.join(self.modifs) - hist = "%s, %s" % ( time.strftime(date_format), pwd.getpwuid(os.getuid())[0] ) + hist = "%s, %s" % ( time.strftime(date_format), script_utilisateur ) # Suffit-t-il d'ajouter un item au dernier élément de l'historique ? try: @@ -786,7 +787,7 @@ class base_classes_crans(crans_ldap) : """ Sauvegarde puis destruction du dn (et des sous-dn) fourni """ if not self.conn : self.connect() data = self.conn.search_s(dn,2) - txt = "%s # Destruction le %s par %s" % (data, time.strftime(date_format), pwd.getpwuid(os.getuid())[0]) + txt = "%s # Destruction le %s par %s" % (data, time.strftime(date_format), script_utilisateur) if comment : txt += ' (%s)' % comment txt += '\n' diff --git a/gestion/lock.py b/gestion/lock.py index 576ff138..93dc2806 100755 --- a/gestion/lock.py +++ b/gestion/lock.py @@ -7,7 +7,7 @@ Copyright (C) Fr Licence : GPLv2 """ -import os,string,time,sys,pwd, affich_tools +import os,string,time,sys, affich_tools def make_lock(lock_name, lock_comment='') : """ Création d'un lock """ @@ -35,7 +35,7 @@ def make_lock(lock_name, lock_comment='') : ### Prise du lock lock_fd=open(lock_file, "w") - lock_fd.write("%s\n%s\n%s" % (os.getpid(), pwd.getpwuid(os.getuid())[0], lock_comment) ) + lock_fd.write("%s\n%s" % (os.getpid(), lock_comment) ) lock_fd.close() def remove_lock( lock_name ) : diff --git a/gestion/user_tests.py b/gestion/user_tests.py index a92f1ed4..4cd36be5 100755 --- a/gestion/user_tests.py +++ b/gestion/user_tests.py @@ -9,20 +9,17 @@ Licence : GPLv2 import os, commands, pwd -def isroot(): - """ Retourne True si l'utilisateur lancant le script est root """ - return os.getuid() == 0 - -def issys(login=''): - """ Retourne True si l'utilisateur est système (uid<500) - Si login='', prend l'utilisateur loggué """ - if login == '' : login = pwd.getpwuid(os.getuid())[0] - return int(commands.getoutput("id -u %s" % login)) <500 +def getuser() : + """ Retourne l'utilisateur lancant les scripts """ + user = os.getenv('SUDO_USER') + if not user : + user = pwd.getpwuid(os.getuid())[0] + return user def groups(login='') : """ Retourne liste des groupes (gid) auquels appartient l'utilisateur fourni, si aucun utilisateur est founit prend l'utilisateur loggué """ - if login == '' : login = pwd.getpwuid(os.getuid())[0] + if login == '' : login = getuser() return commands.getoutput('id -G %s' % login).split() def isadm(login='') : @@ -31,11 +28,11 @@ def isadm(login='') : return '4' in groups(login) def isdeconnecteur(login='') : - """ Retourne True si l'utilisateur est dans le groupe 110 (disconnect) + """ Retourne True si l'utilisateur est dans le groupe 610 (disconnect) Si login='', prend l'utilisateur loggué """ return isadm(login) or '610' in groups(login) def iscableur(login='') : - """ Retourne True si l'utilisateur est dans le groupe 104 (respbat) + """ Retourne True si l'utilisateur est dans le groupe 604 (respbat) Si login='', prend l'utilisateur loggué """ return isadm(login) or '604' in groups(login)