[Python-de] passwd shadow

"Martin v. Löwis" martin at v.loewis.de
Sa Nov 3 08:32:30 UTC 2007


> Jetzt komme ich natürlich nicht an die /etc/shadow ran.  klar. Ist ja 
> auch richtig so. 
> 
> Bietet Python nicht eine Funktion mit der ich das Passwort/User 
> überprüfen kann. So was wie
> 
> 	"bool = chackPasswd(username, passwort)"
> 
> Ich brauche je nicht das passwort sondern nur ein True/False ob das 
> angegebene Passowrt mit dem User übereinstimmt.

Wie sollte denn ein solches Modul funktionieren? Es müsste ja wiederum
auf die shadow-Datenbank zugreifen, und dazu benötigt es Rechte. Da
ein Modul immer nur die Rechte des Prozesses hat, in dem es läuft,
brauchst Du halt Root-Rechte für jedes Modul, dass in irgend einer
Weise selbst die shadow-Datenbank liest.

Die einzige Möglichkeit ist, dass es einen *anderen* Prozess gibt,
der als Root läuft, und den Du irgendwie fragen kannst. Dazu gibt
es prinzipiell zwei Ansätze unter Unix:

1. s-bit-Programme. Du startest beispielsweise

   /bin/su <username> -c /bin/true

   und gibst das Passwort im Terminal ein (programmatisch)
   Falls der Exit-Status 0 ist, stimmt das Passwort, ansonsten
   nicht.

   Das ist auch das Verfahren von Apaches mod-auth-shadow;
   das setuid-Programm liest da zwei Zeilen von der
   Standardeingabe (Nutzername und Passwort) und gibt dann
   im exit-Status das Prüfungsergebnis an.

2. Daemons. Du startest beispielsweise saslauthd, konfigurierst
   ihn auf shadow, und sendest an ihn dann Anfragen zur
   Passwortüberprüfung.

Ciao,
Martin