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
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

View file

@ -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'

View file

@ -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 ) :

View file

@ -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)