Welches ProgrammNurfragt nach dem Passwort des angegebenen Benutzers (auch wenn der aufrufende Benutzer root ist) und gibt den Exit-Code 0 zurück, wenn alles in Ordnung ist, und 1, wenn es fehlschlägt?
Gibt es ein so einfaches Programm (also kein „sudo“ mit bearbeiteter Konfiguration), um diese Aufgabe auszuführen?
Außerdem suche ich nach einem Programm, das den Benutzer anmeldet (sein Passwort überprüft, in auth.log schreibt), aber keine Programme ausführt (wie login
), sondern einfach den Exit-Code zurückgibt.
Antwort1
Sie möchten ein Dienstprogramm namenspwauth
. Es macht genau das, was Sie beschreiben: akzeptiert einen Benutzernamen und ein Passwort und gibt dann einen Exit-Code basierend auf der Gültigkeit zurück. Es ist für die Verwendung mit Apaches mod_auth_external zum Einklinken in die Systemauthentifizierung konzipiert, sollte aber für das, was Sie wollen, problemlos funktionieren.
Antwort2
Was Sie versuchen, macht den Zweck einer Benutzersitzung zunichte. Der Benutzer hat das Kennwort bereits eingegeben, als er sich bei seinem Konto angemeldet hat. Es ist also unhöflich, für Ihre Aufgabe noch einmal danach zu fragen. Wenn Ihr Programm auf der Anmeldung basieren soll, besteht die beste Vorgehensweise in der Unterstützung von Schlüsselringen. Dadurch kann der Benutzer selbst entscheiden, ob er für Ihre Aufgabe explizit ein Kennwort eingibt oder nicht.
Zwingen Sie Benutzer nicht, den Text correct horse battery staple
erneut einzugeben, wenn sie ihn gerade eingegeben haben ...
Antwort3
Der einfachste Weg scheint zu sein, es mitpython-pamals Beispiel verwenden /usr/share/doc/python-pam/examples/pamtest.py
. Das Beispiel liest das Passwort, authentifiziert den Benutzer mit PAM und schreibt je nach Ergebnis eine Nachricht. Kann leicht in einen anderen Exit-Code geändert werden.