From a1b52e559d598403c540747dc694a132554cad98 Mon Sep 17 00:00:00 2001 From: bernat Date: Fri, 10 Sep 2004 15:29:08 +0200 Subject: [PATCH] Modification de getlogin en pwd.getpwuid(os.getuid())[0] darcs-hash:20040910132908-d1718-61b89fc455a3a225abac8562e81724538a3a57f2.gz --- gestion/chgpass.py | 6 +++--- gestion/gest_crans.py | 6 +++--- gestion/ldap_crans.py | 6 +++--- gestion/user_tests.py | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 9 deletions(-) create mode 100755 gestion/user_tests.py diff --git a/gestion/chgpass.py b/gestion/chgpass.py index 6e2387c0..6a9272e6 100755 --- a/gestion/chgpass.py +++ b/gestion/chgpass.py @@ -1,7 +1,7 @@ #! /usr/bin/env python # -*- coding: iso-8859-15 -*- -import getpass, commands, os, sys +import getpass, commands, os, sys, pwd from affich_tools import cprint import ldap_secret @@ -87,7 +87,7 @@ if __name__ == '__main__' : cprint('Login incorrect','rouge') sys.exit(1) - if os.getlogin() == sys.argv[1] : + if pwd.getpwuid(os.getuid())[0] == sys.argv[1] : cprint('Utiliser passwd pour changer son propre mot de passe','rouge') sys.exit(2) @@ -119,7 +119,7 @@ To: %s Subject: Tentative de changement de mot de passe ! Tentative de changement du mot de passe de %s par %s. -""" % ( From, To , sys.argv[1], os.getlogin() ) +""" % ( From, To , sys.argv[1], pwd.getpwuid(os.getuid())[0] ) # Envoi mail import smtplib diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index f7906a52..c0db2ff9 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -21,7 +21,7 @@ Retournent None si pas d'objet trouv # Destinataires, si vide n'envoi rien To = 'fred@crans.org' -import string, os, sys +import string, os, sys, pwd from whos import aff import time, signal, getopt @@ -639,7 +639,7 @@ def set_blackliste(clas) : # Commentaire c = r[2].strip() - login = os.getlogin() + login = pwd.getpwuid(os.getuid())[0] if c.split(' :')[0] != login : t[3] = login + ' : ' + c @@ -1560,7 +1560,7 @@ if __name__ == '__main__' : try : if To : # Paramètres pour le mail - From = os.getlogin() + '@crans.org' + From = pwd.getpwuid(os.getuid())[0] + '@crans.org' entete_mail = """From: Crans <%s> To: %s diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index 3e4a67d5..a0891827 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 +import smtplib, sre, os, random, string, time, sys, pwd import ldap, ldap.modlist import config, annuaires, iptools, chgpass, user_tests @@ -698,7 +698,7 @@ class base_classes_crans(crans_ldap) : else : modif=', '.join(self.modifs) - hist = "%s, %s" % ( time.strftime(date_format), os.getlogin() ) + hist = "%s, %s" % ( time.strftime(date_format), pwd.getpwuid(os.getuid())[0] ) # Suffit-t-il d'ajouter un item au dernier élément de l'historique ? try: @@ -786,7 +786,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), os.getlogin()) + txt = "%s # Destruction le %s par %s" % (data, time.strftime(date_format), pwd.getpwuid(os.getuid())[0]) if comment : txt += ' (%s)' % comment txt += '\n' diff --git a/gestion/user_tests.py b/gestion/user_tests.py new file mode 100755 index 00000000..a92f1ed4 --- /dev/null +++ b/gestion/user_tests.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" Fonctions de tests sur l'utilisateur + +Copyright (C) Frédéric Pauget +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 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] + return commands.getoutput('id -G %s' % login).split() + +def isadm(login='') : + """ Retourne True si l'utilisateur est dans le groupe 4 (adm) + Si login='', prend l'utilisateur loggué """ + return '4' in groups(login) + +def isdeconnecteur(login='') : + """ Retourne True si l'utilisateur est dans le groupe 110 (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) + Si login='', prend l'utilisateur loggué """ + return isadm(login) or '604' in groups(login)