Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]367[/thread]

Als Unix-Nutzer über Webfrontend identifizieren



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
demokrit
 2004-08-24 18:14
#3532 #3532
User since
2004-08-24
10 Artikel
BenutzerIn
[default_avatar]
Hallo, ich bin in diesem Forum gelandet, da ich mit einem spezifischen Problem in Verbindung NetBSD 1.6ZH, Apache 2 und Perl 5.6.1 nicht weiterkomme.
Ich will ein Webfrontend basteln, auf dem sich Nutzer einloggen können, die bereits einen Account auf dem Server besitzen (Intranet). Hierzu sollen sie den denselben Namen und Passwort verwenden, den sie auch für z.B. SSH nutzen. Mein Problem, wie kann ich das nach Eingabe von Nutzer/Passwort mit der passwd gegenchecken?
Wenn sie dann eingeloggt sind, sollen sie die Möglichkeit haben, Ihr Passwort zu ändern (gibt es da eine perlroutine für? Ich finde da leider nichts :( ) und einige Dateien in Ihrem Home-Verzeichnis zu schreiben, bzw. zu bearbeiten. Damit aber nun der normale www-Nutzer auf de Heimverzeichnisse zugreifen kann, muss ich innerhalb des Perl-Scriptes ja irgendwie den Benutzer wechseln. *hmm* wie? Mit setuid funktioniert es nicht (oder kann man da auch irgendwie ein Passwort übergeben?).

Über Tipps und Lösungsmöglichkeiten wäre ich echt dankbar. Ich möchte eigentlich vermeiden, den Apache als root laufen zu lassen...

Danke und *Grüße*
Kai...
Relais
 2004-08-24 18:22
#3533 #3533
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
perldoc -f crypt erzählt etwas zum Checken von gekrypteten Unix-Passwörtern.

Sie über ein Webfrontend zu ändern ist sehr hoher Aufwand, denn für eine Passwort-Änderung braucht es nicht User- sondern sogar Root-Rechte. Wenn Du in der Shell Dein Passwort mit dem passwd-Befehl änderst, dann verwendet das passwd-Kommando für einen Moment Root-Rechte. Die sollte der Webserver aber nicht erlangen können, und da liegt der Hund dann begraben.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
ptk
 2004-08-24 18:35
#3534 #3534
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Reicht nicht ein setuid-Programm, das zur erhoehter Sicherheit mit taint checks laeuft?
Ronnie
 2004-08-24 18:56
#3535 #3535
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,24.08.2004, 16:35]Reicht nicht ein setuid-Programm, das zur erhoehter Sicherheit mit taint checks laeuft?[/quote]
Aber nicht als root. Nimm einen pseudo-user und der darf dann via sudo passwd aufrufen.
-- Man kann gar nicht paranoid genug sein. ;)
ptk
 2004-08-24 20:03
#3536 #3536
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Das Programm muesste natuerlich wenigstens die "Old password"-Abfrage durchfuehren.

Aber gibt es nicht schon fertige Loesungen dafuer? Kann webmin diese Funktionalitaet?
demokrit
 2004-08-24 20:07
#3537 #3537
User since
2004-08-24
10 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,24.08.2004, 16:35]Reicht nicht ein setuid-Programm, das zur erhoehter Sicherheit mit taint checks laeuft?[/quote]
Was gibt es denn für setuid-Programme? Mit POSIX::setuid() kann ich nicht einfach den Nutzer wechseln. Wäre ja auch unlogisch, irgendwie muss ich ja das Passwort des Nutzers mit übergeben. Oder hab ich da irgendwie eine komplette Denkblockade?

Danke übrigens für den crypt-Hinweis, damit sollte zumindest dies gehen ;)
ptk
 2004-08-24 20:23
#3538 #3538
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Der Flow koennte ungefaehr so gehen:
- User uebergibt altes und neues Passwort an ein CGI, welches mit setuid-Rechten laeuft (entweder per sudo oder /usr/bin/suidperl)
- CGI ueberprueft, ob der User das richtige alte Passwort uebergeben hat (mit getpwuid und crypt)
- wenn alles OK ist, dann wird mit passwd geaendert

Wahrscheinlich sollte man weitere Checks einbauen, z.B. wichtige Benutzer wie "root" sollten ihr Passwort darueber nicht aendern koennen, man koennte so frueh wie moeglich auf den weniger privilegierten Benutzer, dessen Passwort geaendert wird, switchen (per setuid), oder man koennte das suexec-Feature des Apache verwenden und jedem Benutzer das Passwortaenderungs-CGI in sein .public_html legen.
pq
 2004-08-25 01:25
#3539 #3539
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
vielleicht apache auth_pam?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
demokrit
 2004-08-25 20:27
#3540 #3540
User since
2004-08-24
10 Artikel
BenutzerIn
[default_avatar]
auth_pam und apache 2 unter NetBSD will irgendwie nicht so richtig. Es gibt kein vorkompiliertes Paket und wenn ich ein selbstkompiliertes nehme, gibt es irgendwelche Probleme mit der lib_elf.so *argl* Ich wollte da eigentlich nicht so tief gehen...

Aber das andere sollte ja auch gehen. Nur bin ich anscheinend zu blöd eine Pipe zu schreiben. Theoretisch müsste ich doch so den passwd-Befehl ausführen können (obsolet ist ein testnutzer):

---
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

$uebergabe=$ENV{QUERY_STRING};
print "Content-Type: text/html\n\n";

open(PW, '| sudo passwd obsolet' );
print PW ("pass33\r\n");
print PW ("pass33\r\n");
close(PW);

---
Er setzt hierbei auch ein Passwort. Nur nicht das 'pass33', denn damit kann ich dann nicht zu dem Nutzer wechseln. ???  :rock:

edit pq: code-tags spendiert\n\n

<!--EDIT|pq|1093458469-->
ptk
 2004-08-25 20:52
#3541 #3541
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ist \r tatsaechlich notwendig?
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-08-24 18:14.