Tobias Koenig tokoe@kde.org wrote:
On Sun, Jun 22, 2003 at 08:17:24PM +0200, Fabian Hänsel wrote:
Aber zu "was_langes" (auch so ein Konstrukt mit passwd drin) kommt das ganze gar nicht erst. Es gibt folgende Meldung:
su: must be run from a terminal
Yepp, da su die echo Funktion des Terminals auschalten muss, damit nicht jeder User mitlesen kann.
su will tatsächlich nur von einem {p/t}ty aus laufen. Es verwendet aber auch nur PAM. su ruft dann pam_acct_mgmt auf, welches selbst auf stdin nach dem Passwort fragt. pam_acct_mgmt schaltet das echo auf stdout ab, liest aber troztdem von stdin ein. Ich hab mir ein PAM-Programm webauth geschrieben, welches per PAM (pam_chauthtok) nur das passwd einliest, und 0 zurückliefert, wenn es richtig ist und sonst 1. Falls es richtig war kommt dann per Skript ein weiteres suid-root-Programm zum Zuge, das das Passwort ändert.
Bei su (und wohl auch passwd)
passwd scheint diese Option auch zu haben (obwohl nicht in der man page erwähnt (hint to Josef :)))
Die Sache mit dem Einlesen macht PAM, welches sich in der Beziehung komisch verhält: $ (echo alt; echo neu; echo neu)| passwd Changing password for fab (current) UNIX password: <ein bisschen warten> passwd: Authentication token manipulation error
Als momentanes Passwort kriegt passwd/PAM auf diesem Wege offenbar "alt\nneu\nneu\n" geliefert - warum auch immer.
mfg, Fabian