Modification de getlogin en pwd.getpwuid(os.getuid())[0]

darcs-hash:20040910132908-d1718-61b89fc455a3a225abac8562e81724538a3a57f2.gz
This commit is contained in:
bernat 2004-09-10 15:29:08 +02:00
parent d0c09e1953
commit a1b52e559d
4 changed files with 50 additions and 9 deletions

View file

@ -1,7 +1,7 @@
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: iso-8859-15 -*-
import getpass, commands, os, sys import getpass, commands, os, sys, pwd
from affich_tools import cprint from affich_tools import cprint
import ldap_secret import ldap_secret
@ -87,7 +87,7 @@ if __name__ == '__main__' :
cprint('Login incorrect','rouge') cprint('Login incorrect','rouge')
sys.exit(1) 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') cprint('Utiliser passwd pour changer son propre mot de passe','rouge')
sys.exit(2) sys.exit(2)
@ -119,7 +119,7 @@ To: %s
Subject: Tentative de changement de mot de passe ! Subject: Tentative de changement de mot de passe !
Tentative de changement du mot de passe de %s par %s. 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 # Envoi mail
import smtplib import smtplib

View file

@ -21,7 +21,7 @@ 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 import string, os, sys, pwd
from whos import aff from whos import aff
import time, signal, getopt import time, signal, getopt
@ -639,7 +639,7 @@ def set_blackliste(clas) :
# Commentaire # Commentaire
c = r[2].strip() c = r[2].strip()
login = os.getlogin() login = pwd.getpwuid(os.getuid())[0]
if c.split(' :')[0] != login : if c.split(' :')[0] != login :
t[3] = login + ' : ' + c t[3] = login + ' : ' + c
@ -1560,7 +1560,7 @@ if __name__ == '__main__' :
try : try :
if To : if To :
# Paramètres pour le mail # Paramètres pour le mail
From = os.getlogin() + '@crans.org' From = pwd.getpwuid(os.getuid())[0] + '@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 import smtplib, sre, os, random, string, time, sys, pwd
import ldap, ldap.modlist import ldap, ldap.modlist
import config, annuaires, iptools, chgpass, user_tests import config, annuaires, iptools, chgpass, user_tests
@ -698,7 +698,7 @@ class base_classes_crans(crans_ldap) :
else : else :
modif=', '.join(self.modifs) 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 ? # Suffit-t-il d'ajouter un item au dernier élément de l'historique ?
try: try:
@ -786,7 +786,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), os.getlogin()) txt = "%s # Destruction le %s par %s" % (data, time.strftime(date_format), pwd.getpwuid(os.getuid())[0])
if comment : if comment :
txt += ' (%s)' % comment txt += ' (%s)' % comment
txt += '\n' txt += '\n'

41
gestion/user_tests.py Executable file
View file

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