Centralisation du remplacement de os.getlogin

On utilise la variable SUDO_USER et sinon on se rabat sur un getuid

darcs-hash:20040910192447-41617-51511e6987093eae4473592bde71fa0bd73f0151.gz
This commit is contained in:
pauget 2004-09-10 21:24:47 +02:00
parent 3d34d11860
commit e0da11ea79
4 changed files with 19 additions and 21 deletions

View file

@ -21,13 +21,13 @@ Retournent None si pas d'objet trouv
# Destinataires, si vide n'envoi rien # Destinataires, si vide n'envoi rien
To = 'fred@crans.org' To = 'fred@crans.org'
import string, os, sys, pwd import string, os, sys
from whos import aff from whos import aff
import time, signal, getopt import time, signal, getopt
import affich_tools, config import affich_tools, config
from lock import make_lock, remove_lock 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) : def dialog(arg) :
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg) return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg)
@ -639,7 +639,7 @@ def set_blackliste(clas) :
# Commentaire # Commentaire
c = r[2].strip() c = r[2].strip()
login = pwd.getpwuid(os.getuid())[0] login = script_utilisateur
if c.split(' :')[0] != login : if c.split(' :')[0] != login :
t[3] = login + ' : ' + c t[3] = login + ' : ' + c
@ -1576,7 +1576,7 @@ if __name__ == '__main__' :
try : try :
if To : if To :
# Paramètres pour le mail # Paramètres pour le mail
From = pwd.getpwuid(os.getuid())[0] + '@crans.org' From = script_utilisateur + '@crans.org'
entete_mail = """From: Crans <%s> entete_mail = """From: Crans <%s>
To: %s To: %s

View file

@ -22,7 +22,7 @@ smtpserv = "localhost"
# TODO : # TODO :
# Interdire la modif des comptes nounou # 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 ldap, ldap.modlist
import config, annuaires, iptools, chgpass, user_tests import config, annuaires, iptools, chgpass, user_tests
@ -53,6 +53,7 @@ droits_possibles = [ u'Nounou', u'Apprenti', u'Mod
isadm = user_tests.isadm() isadm = user_tests.isadm()
isdeconnecteur = user_tests.isdeconnecteur() isdeconnecteur = user_tests.isdeconnecteur()
ann_scol = config.ann_scol ann_scol = config.ann_scol
script_utilisateur = user_tests.getuser()
################################################################################## ##################################################################################
### Fonctions utiles ### Fonctions utiles
@ -698,7 +699,7 @@ class base_classes_crans(crans_ldap) :
else : else :
modif=', '.join(self.modifs) 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 ? # Suffit-t-il d'ajouter un item au dernier élément de l'historique ?
try: try:
@ -786,7 +787,7 @@ class base_classes_crans(crans_ldap) :
""" Sauvegarde puis destruction du dn (et des sous-dn) fourni """ """ Sauvegarde puis destruction du dn (et des sous-dn) fourni """
if not self.conn : self.connect() if not self.conn : self.connect()
data = self.conn.search_s(dn,2) 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 : if comment :
txt += ' (%s)' % comment txt += ' (%s)' % comment
txt += '\n' txt += '\n'

View file

@ -7,7 +7,7 @@ Copyright (C) Fr
Licence : GPLv2 Licence : GPLv2
""" """
import os,string,time,sys,pwd, affich_tools import os,string,time,sys, affich_tools
def make_lock(lock_name, lock_comment='') : def make_lock(lock_name, lock_comment='') :
""" Création d'un lock """ """ Création d'un lock """
@ -35,7 +35,7 @@ def make_lock(lock_name, lock_comment='') :
### Prise du lock ### Prise du lock
lock_fd=open(lock_file, "w") 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() lock_fd.close()
def remove_lock( lock_name ) : def remove_lock( lock_name ) :

View file

@ -9,20 +9,17 @@ Licence : GPLv2
import os, commands, pwd import os, commands, pwd
def isroot(): def getuser() :
""" Retourne True si l'utilisateur lancant le script est root """ """ Retourne l'utilisateur lancant les scripts """
return os.getuid() == 0 user = os.getenv('SUDO_USER')
if not user :
def issys(login=''): user = pwd.getpwuid(os.getuid())[0]
""" Retourne True si l'utilisateur est système (uid<500) return user
Si login='', prend l'utilisateur loggué """
if login == '' : login = pwd.getpwuid(os.getuid())[0]
return int(commands.getoutput("id -u %s" % login)) <500
def groups(login='') : def groups(login='') :
""" Retourne liste des groupes (gid) auquels appartient l'utilisateur """ Retourne liste des groupes (gid) auquels appartient l'utilisateur
fourni, si aucun utilisateur est founit prend l'utilisateur loggué """ 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() return commands.getoutput('id -G %s' % login).split()
def isadm(login='') : def isadm(login='') :
@ -31,11 +28,11 @@ def isadm(login='') :
return '4' in groups(login) return '4' in groups(login)
def isdeconnecteur(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é """ Si login='', prend l'utilisateur loggué """
return isadm(login) or '610' in groups(login) return isadm(login) or '610' in groups(login)
def iscableur(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é """ Si login='', prend l'utilisateur loggué """
return isadm(login) or '604' in groups(login) return isadm(login) or '604' in groups(login)