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:
parent
3d34d11860
commit
e0da11ea79
4 changed files with 19 additions and 21 deletions
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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 ) :
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue