[gestion/*.py] Ré-encodage de certains scripts en UTF-8
Ignore-this: dafa22ed56eaf0d816fd089e42672eb5 darcs-hash:20090309212124-0445d-09ac8ae4052b6f333706be1baa1c7f4d94455fd5.gz
This commit is contained in:
parent
7addc503a8
commit
cc31727b60
21 changed files with 1351 additions and 1351 deletions
|
@ -1,5 +1,5 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Script de changement de mots de passe LDAP
|
||||
|
@ -7,14 +7,14 @@ Script de changement de mots de passe LDAP
|
|||
Utilisation :
|
||||
* cas 1 : sans arguements par un utlisateur lambda :
|
||||
changement de son propre mdp
|
||||
* cas 2 : avec argument par un utilisateur ayant accès
|
||||
total à la base LDAP (respbats) mais PAS ROOT :
|
||||
changement du mdp de l'adhérent fourni en argument,
|
||||
impossibilité de modifier le mdp d'un compte privilégié
|
||||
* cas 3 : lancé par root : possibilité de modifier
|
||||
* cas 2 : avec argument par un utilisateur ayant accès
|
||||
total à la base LDAP (respbats) mais PAS ROOT :
|
||||
changement du mdp de l'adhérent fourni en argument,
|
||||
impossibilité de modifier le mdp d'un compte privilégié
|
||||
* cas 3 : lancé par root : possibilité de modifier
|
||||
tous les mots de passe LDAP
|
||||
|
||||
Copyright (C) Frédéric Pauget
|
||||
Copyright (C) Frédéric Pauget
|
||||
Licence : GPLv2
|
||||
"""
|
||||
|
||||
|
@ -33,17 +33,17 @@ uri = 'ldap://ldap.adm.crans.org'
|
|||
syslog.openlog('chgpass',syslog.LOG_PID,syslog.LOG_AUTH)
|
||||
|
||||
def decode64(chaine):
|
||||
""" Décode une chaine de caratère utf8/64 et retourne un unicode """
|
||||
""" Décode une chaine de caratère utf8/64 et retourne un unicode """
|
||||
try:
|
||||
return base64.decodestring(chaine).decode('utf8','ignore')
|
||||
except:
|
||||
return chaine.decode('utf8','ignore')
|
||||
|
||||
def chgpass(dn) :
|
||||
cprint(u"""Le nouveau mot de passe doit comporter au minimum 6 caractères.
|
||||
Il ne doit pas être basé sur un mot du dictionnaire.""", 'jaune')
|
||||
print "Il est conseillé d'utiliser une combinaison de minuscules, majuscules,\nde chiffres et d'au moins un caractère spécial."
|
||||
print "Le mot de passe tapé ne sera pas écrit à l'écran."
|
||||
cprint(u"""Le nouveau mot de passe doit comporter au minimum 6 caractères.
|
||||
Il ne doit pas être basé sur un mot du dictionnaire.""", 'jaune')
|
||||
print "Il est conseillé d'utiliser une combinaison de minuscules, majuscules,\nde chiffres et d'au moins un caractère spécial."
|
||||
print "Le mot de passe tapé ne sera pas écrit à l'écran."
|
||||
print "Taper Ctrl-D pour abandonner"
|
||||
|
||||
try :
|
||||
|
@ -60,17 +60,17 @@ Il ne doit pas
|
|||
try:
|
||||
mdp = mdp.encode('ascii')
|
||||
except UnicodeEncodeError:
|
||||
cprint(u'Les accents ou caractères bizarres ne sont pas autorisés (mais #!@*&%{}| le sont !)',
|
||||
cprint(u'Les accents ou caractères bizarres ne sont pas autorisés (mais #!@*&%{}| le sont !)',
|
||||
'rouge')
|
||||
continue
|
||||
|
||||
## 2bis - On évite une attaque de type injection de code shell
|
||||
## 2bis - On évite une attaque de type injection de code shell
|
||||
if "'" in mdp:
|
||||
cprint(u'Les accents ou caractères bizarres ne sont pas autorisés (mais #!@*&%{}| le sont !)',
|
||||
cprint(u'Les accents ou caractères bizarres ne sont pas autorisés (mais #!@*&%{}| le sont !)',
|
||||
'rouge')
|
||||
continue
|
||||
|
||||
## 3 - assez de caractères de types différents ?
|
||||
## 3 - assez de caractères de types différents ?
|
||||
chiffres = 0
|
||||
majuscules = 0
|
||||
minuscules = 0
|
||||
|
@ -94,9 +94,9 @@ Il ne doit pas
|
|||
test = commands.getoutput("echo '%s' | /usr/sbin/crack_testlib" % mdp)
|
||||
if test.split(':')[-1] != ' ok' :
|
||||
commentaire = {
|
||||
' it does not contain enough DIFFERENT characters': u'Il y a trop de caractères identiques.' ,
|
||||
' it is based on a dictionary word': u'Le mot de passe est basé sur un mot du dictionnaire' ,
|
||||
' it is too simplistic/systematic': u'Le mot de passe est trop simple/répétitif'
|
||||
' it does not contain enough DIFFERENT characters': u'Il y a trop de caractères identiques.' ,
|
||||
' it is based on a dictionary word': u'Le mot de passe est basé sur un mot du dictionnaire' ,
|
||||
' it is too simplistic/systematic': u'Le mot de passe est trop simple/répétitif'
|
||||
}.get(test.split(':')[-1],test.split(':')[-1])
|
||||
cprint(commentaire, 'rouge')
|
||||
continue
|
||||
|
@ -104,7 +104,7 @@ Il ne doit pas
|
|||
### On redemande le mot de passe
|
||||
mdp1 = getpass.getpass('Retaper mot de passe : ')
|
||||
if mdp != mdp1 :
|
||||
cprint(u'Les deux mots de passe entrés sont différents, réesayer', 'rouge')
|
||||
cprint(u'Les deux mots de passe entrés sont différents, réesayer', 'rouge')
|
||||
continue
|
||||
|
||||
break
|
||||
|
@ -114,7 +114,7 @@ Il ne doit pas
|
|||
cprint(u'Erreur lors du changement de mot de passe', 'rouge')
|
||||
syslog.syslog("LDAP password changed for dn=%s" % dn)
|
||||
else :
|
||||
cprint(u'Changement effectué avec succès', u'vert')
|
||||
cprint(u'Changement effectué avec succès', u'vert')
|
||||
|
||||
except KeyboardInterrupt :
|
||||
cprint(u'\nAbandon', 'rouge')
|
||||
|
@ -125,7 +125,7 @@ Il ne doit pas
|
|||
pass
|
||||
|
||||
if __name__ == '__main__' :
|
||||
sys.stdout.write('\r \r') # Pour esthétique lors de l'utilisation par sudo
|
||||
sys.stdout.write('\r \r') # Pour esthétique lors de l'utilisation par sudo
|
||||
if len(sys.argv) == 1 :
|
||||
# Changement de son mot de passe
|
||||
login = getuser()
|
||||
|
@ -136,7 +136,7 @@ if __name__ == '__main__' :
|
|||
print "Changement du mot de passe du compte choisi."
|
||||
sys.exit(255)
|
||||
else :
|
||||
# Changement du mot de passe par un câbleur ou une nounou
|
||||
# Changement du mot de passe par un câbleur ou une nounou
|
||||
login = sys.argv[1]
|
||||
self_mode = False
|
||||
for c in login[:] :
|
||||
|
@ -153,12 +153,12 @@ if __name__ == '__main__' :
|
|||
else :
|
||||
s = commands.getoutput("/usr/bin/ldapsearch -D cn=readonly,dc=crans,dc=org -y/etc/ldap/readonly -x -LLL '(&(objectClass=posixAccount)(uid=%s))' dn nom prenom droits | grep -v MultiMachines" % login).strip()
|
||||
if not s :
|
||||
cprint(u'Login non trouvé dans la base LDAP', 'rouge')
|
||||
cprint(u'Login non trouvé dans la base LDAP', 'rouge')
|
||||
sys.exit(3)
|
||||
|
||||
# Ca a l'air bon
|
||||
if s.find('\n\n') != -1 :
|
||||
# Plusieurs trouvé : pas normal
|
||||
# Plusieurs trouvé : pas normal
|
||||
cprint(u'Erreur lors de la recherche du login : plusieurs occurences !', 'rouge')
|
||||
sys.exit(4)
|
||||
|
||||
|
@ -174,7 +174,7 @@ if __name__ == '__main__' :
|
|||
sys.exit(5)
|
||||
|
||||
if self_mode :
|
||||
# Il faut vérifier l'ancien mot de passe
|
||||
# Il faut vérifier l'ancien mot de passe
|
||||
ldap_auth_dn = dn
|
||||
ldap_password = getpass.getpass('Mot de passe actuel : ')
|
||||
s = commands.getoutput("/usr/bin/ldapwhoami -H '%s' -x -D '%s' -w '%s'" % ( uri, ldap_auth_dn, ldap_password ) ).strip()
|
||||
|
@ -188,7 +188,7 @@ if __name__ == '__main__' :
|
|||
sys.exit(8)
|
||||
|
||||
elif len(s) > 3 and os.getuid()!=0 :
|
||||
# Adhérent avec droits et on est pas root
|
||||
# Adhérent avec droits et on est pas root
|
||||
From = 'roots@crans.org'
|
||||
To = 'roots@crans.org'
|
||||
mail = """From: Root <%s>
|
||||
|
@ -203,7 +203,7 @@ Tentative de changement du mot de passe de %s par %s.
|
|||
conn = smtplib.SMTP('localhost')
|
||||
conn.sendmail(From, To , mail )
|
||||
conn.quit()
|
||||
cprint(u'Impossible de changer le mot de passe de cet adhérent : compte privilégié', 'rouge')
|
||||
cprint(u'Impossible de changer le mot de passe de cet adhérent : compte privilégié', 'rouge')
|
||||
sys.exit(6)
|
||||
|
||||
# Finalement !
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue