/etc/passwd und /etc/shadow mit PHP auslesen
Guten Morgen, interesse an was kniffeligem? Ich soll ein Tool schreiben, das im Intranet einer Firma von den dort arbeitenden Usern benutzt werden soll. Es wird auf dem Server laufen, auf dem auch jeder User einen Account hat und die Leute sollen sich mit ihren vorhandenen Benutzernamen und Passwörtern einloggen können. Mein Problem dabei: Wie kann ich diese Personen autentifizieren? Die /etc/passwd lässt sich mit PHP auslesen, die /etc/shadow ist aber nur root zugänglich... Dann käme noch das Problem mit der verschlüsselung der Passwörter... Geht das vielleicht mit .htaccess? Wie würdet ihr sowas lösen oder habt es vielleicht sogar schon? Schon mal vielen Dank an alle Helfenden! Mfg, Christian -- _______________________________________________________________________ Support your local Club! ...visit: http://www.butanclub.de/
Hallo Christian,
From the keyboard of Christian,
Guten Morgen,
interesse an was kniffeligem?
Ich soll ein Tool schreiben, das im Intranet einer Firma von den dort arbeitenden Usern benutzt werden soll. Es wird auf dem Server laufen, auf dem auch jeder User einen Account hat und die Leute sollen sich mit ihren vorhandenen Benutzernamen und Passwörtern einloggen können.
Mein Problem dabei: Wie kann ich diese Personen autentifizieren? Die /etc/passwd lässt sich mit PHP auslesen, die /etc/shadow ist aber nur root zugänglich... Dann käme noch das Problem mit der verschlüsselung der Passwörter... Geht das vielleicht mit .htaccess?
Ne. Wenn du die Übertragung zwischen dem Browser des Clients und deinem Webserver verschlüsseln willst, mußt du deinen WebServer SSL-fähig machen und deine Clients müssen einen SSL-fähigen Browser verwenden.
Wie würdet ihr sowas lösen oder habt es vielleicht sogar schon?
Wenn die Daten verschlüsselt übertragen werden, würde ich das Apache-Modul mod_auth_pam verwenden. Dann kannst du eine .htaccess in den zu schützenden Bereich legen und dort kannst du festlegen welche Gruppen oder User die im Linuxsystem vorhanden sind, Zugriff erhalten. Also alles mit Apache-Bordmitteln und ohne PHP. Dafür gibt es nun Mal PAM. bye Waldemar -- Are your questions smart enough? http://www.tuxedo.org/~esr/faqs/smart-questions.html
On Thu, 10 Jan 2002, Christian Schneider wrote:
Mein Problem dabei: Wie kann ich diese Personen autentifizieren? Die /etc/passwd lässt sich mit PHP auslesen, die /etc/shadow ist aber nur root zugänglich... Dann käme noch das Problem mit der verschlüsselung der Passwörter... Geht das vielleicht mit .htaccess?
Wie würdet ihr sowas lösen oder habt es vielleicht sogar schon?
Hm. Wie waere's wenn du den Server mit C/C++ (und ggfs. der libpam) schreibst? Siehe man 3 shadow, man getpwnam, man 3 crypt, apropos pam_ und /usr/share/doc/packages/pam, da bes. txts/pam_appl.txt. Fuer getspnam (s. man 3 shadow) braucht man allerdings root-Rechte, das ist also nicht zu empfehlen... Und das suid-bit zu setzen ist IMO eine ganz schlechte Idee, da das das komplette System der shadow-Datei aushebeln wuerde. -dnh -- HTML's a cheap whore. Treating her with respect is possible, and even pref- erable, because once upon a time she was a beautiful and virginal format, but you shouldn't expect too much of her at this point. (Mark 'Kamikaze' Hughes)
Und das suid-bit zu setzen ist IMO eine ganz schlechte Idee, da das das komplette System der shadow-Datei aushebeln wuerde.
??? Wie macht es Linux dann? Beim einlogen muss ja auch auf die Shadow-Datei zugegriffen werden, da man ja normalerweise sicherlich keine root-Rechte hat. Das wird doch wohl auch über suid gehen, oder? Aber ich gebe Dir Recht, dass man damit sehr vorsichtig umgehen muss, und es auf jeden Fall nur ganz gezielt anwenden sollte. Das anmelden als System user wäre doch so ein Beispiel. Aber auch hier sollte wirklich nur der Zugriff auf die shadow Datei unter root laufen, und auch das nur sehr kontrolliert. Gruss Florian _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
On Fri, 11 Jan 2002, Florian Brunner wrote:
Und das suid-bit zu setzen ist IMO eine ganz schlechte Idee, da das das komplette System der shadow-Datei aushebeln wuerde.
??? Wie macht es Linux dann? Beim einlogen muss ja auch auf die Shadow-Datei zugegriffen werden, da man ja normalerweise sicherlich keine root-Rechte hat. Das wird doch wohl auch über suid gehen, oder?
Nein. Denn der login laeuft ja ueber init, mingetty und login, und die laufen nach dem booten ja sowieso schon mit root-Rechten... d.h. zu diesem Zeitpunkt hat man _dieses_ Problem nicht. Wenn nun aber z.B. ein cgi diesen Mechanismus nachahmen will, muss ja das cgi unter irgendeiner UID laufen... Und da bekommen wir dann die Probleme, denn cgis sollten ja generell nie mit root-Rechten laufen...
Aber ich gebe Dir Recht, dass man damit sehr vorsichtig umgehen muss, und es auf jeden Fall nur ganz gezielt anwenden sollte. Das anmelden als System user wäre doch so ein Beispiel. Aber auch hier sollte wirklich nur der Zugriff auf die shadow Datei unter root laufen, und auch das nur sehr kontrolliert.
ACK. Ich bin ja selbst noch Anfaenger in der Beziehung, aber _das_ hab ich mir hinter die Ohren geschrieben :) -dnh, Wolfgang dankend, falls er doch noch hier mitlesen sollte... -- Auch wieder richtig, aber zum bloed posten brauch ich kein Hirn. Ausserdem tipp ich schneller, als ich denke :). -- Klaus Muth
On Friday, 11. January 2002 01.56, David Haller wrote:
On Fri, 11 Jan 2002, Florian Brunner wrote:
Und das suid-bit zu setzen ist IMO eine ganz schlechte Idee, da das das komplette System der shadow-Datei aushebeln wuerde.
??? Wie macht es Linux dann? Beim einlogen muss ja auch auf die Shadow-Datei zugegriffen werden, da man ja normalerweise sicherlich keine root-Rechte hat. Das wird doch wohl auch über suid gehen, oder?
Nein. Denn der login laeuft ja ueber init, mingetty und login, und die laufen nach dem booten ja sowieso schon mit root-Rechten... d.h. zu diesem Zeitpunkt hat man _dieses_ Problem nicht. Wenn nun aber z.B. ein cgi diesen Mechanismus nachahmen will, muss ja das cgi unter irgendeiner UID laufen... Und da bekommen wir dann die Probleme, denn cgis sollten ja generell nie mit root-Rechten laufen...
Nun auf jeden Fall läuft da schon etwas unter root, damit man darauf zugreifen kann. Könnte man nicht diese (z.B. login ?) mit einem Systemcall aufrufen? _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
On Fri, 11 Jan 2002, Florian Brunner wrote:
On Friday, 11. January 2002 01.56, David Haller wrote:
Wenn nun aber z.B. ein cgi diesen Mechanismus nachahmen will, muss ja das cgi unter irgendeiner UID laufen... Und da bekommen wir dann die Probleme, denn cgis sollten ja generell nie mit root-Rechten laufen...
Nun auf jeden Fall läuft da schon etwas unter root, damit man darauf zugreifen kann. Könnte man nicht diese (z.B. login ?) mit einem Systemcall aufrufen?
Schau dir das mit libpam an... -dnh -- Nicht alles, was hinkt, ist ein Vergleich.
Hallo, falls sich noch jemand an diesen Thread erinnert und wissen möchte, wie es ausgegangen ist: Nach noch mehr Googeln und durchwühlen der Apache-Modul-Verzeichnisse haben wir noch folgende nützliche Module gefunden: mod_auth_system mod_auth_shadow Die mussten noch von Hand in die httpd.conf eingetragen werden und das wars... Funktioniert prima! Es wurde jedoch vor Sicherheitsrisiken gewarnt. Ist in meinem Fall aber nicht so tragisch, das dieses Tool nur im Intranet zugänglich ist. Ich hoffe, es war etwas hilfreiches dabei... Mfg, Christian -- _______________________________________________________________________ Support your local Club! ...visit: http://www.butanclub.de/
Hallo, at Thu, 10 Jan 2002 10:03:04 +0100 Christian Schneider wrote:
Mein Problem dabei: Wie kann ich diese Personen autentifizieren?
Schau doch mal nach, wie es webmin macht. Das ist doch auch eine Scriptlösung in Perl. Gruß Michael -- Registered Linux User #228306 http://counter.li.org Phone/Fax +49 7000 MACBYTE GNU PGP-Key ID 22C51B8D0140F88B ++ Webdesign ++ PHP Development ++
Christian Schneider wrote:
Guten Morgen,
interesse an was kniffeligem?
Ich soll ein Tool schreiben, das im Intranet einer Firma von den dort arbeitenden Usern benutzt werden soll. Es wird auf dem Server laufen, auf dem auch jeder User einen Account hat und die Leute sollen sich mit ihren vorhandenen Benutzernamen und Passwörtern einloggen können.
Mein Problem dabei: Wie kann ich diese Personen autentifizieren? Die /etc/passwd lässt sich mit PHP auslesen, die /etc/shadow ist aber nur root zugänglich... Dann käme noch das Problem mit der verschlüsselung der Passwörter... Geht das vielleicht mit .htaccess?
Hallo ja sowas wäre echt toll. Die shadow ist da echt mis. Ich hab mir mal zwei php_pam module angeshen. Aber noch nicht ausprobiert ftp://ftp.netexpress.net/pub/pam/php_pam.newest.tgz Ich bin auch auf der Suche nach einer zentralen Lösung (Sendmail, Cyrus, Samba) leider kann Samba, Sendmail noch kein LDAP (oder nur mit patch) aber zu deinem Ich würde mir (ohne pam ...) das so vorstellen. Du schreibst ein (perl,shell) script das aus der passwd den user und aus der shadow das Passwort hold und in eine Datei (user:passwd) schreibt. Diese Datei legst du auserhalb des dokument root ab (/usr/local/httpd/geheim/passwd) In PHP gibt es die funktion crypt damit kannst du ein Passwort überprüfen. $eingabe_passwort = crypt ("Klartextpasswort von der Eingabe", "SALT") Statt dem SALT kannst du gleich das verschlüsselte Passwort aus der geheim/passwd nehmen. $eingabe_passwort == "Dem Passwort aus geheim/passwd" Grüße Torsten
Moin,
* Torsten Rosenberger
Ich bin auch auf der Suche nach einer zentralen Lösung (Sendmail, Cyrus, Samba) leider kann Samba, Sendmail noch kein LDAP (oder nur mit patch) Tja, nimm halt einen MTA, der es kann.
Ich würde mir (ohne pam ...) das so vorstellen. Du schreibst ein (perl,shell) script das aus der passwd den user und aus der shadow das Passwort hold und in eine Datei (user:passwd) schreibt. Oder einfacher: Das Shadowsystem deinstallieren, das hat den gleichen Effekt.
-- Unix is not an 'A-ha!' experience, it is more of a 'Holy shit!' experience. - Colin McFadyen
participants (7)
-
Christian Schneider
-
David Haller
-
Florian Brunner
-
Michael Raab
-
Thorsten Haude
-
Torsten Rosenberger
-
Waldemar Brodkorb