Moin Moin!
hallo,
ich stehe vor folgender Problemstellung! (sorry, bin ein bissel schlecht im Erklären)
Ich habe zunächst eine Start-html-seite.
Der user muss sich einloggen (über .htaccess, Name und verschlüsselte passwörter der User sind in einer gesonderten Datei gespeichert)
D.h. Web-User und System-User haben miteinander nichts zu tun.
Nach dem Einloggen öffnet sich im Browser mein perl-skript:
Es erzeugt eine Webseite und Formulare für den user.
In diesem Skript will ich nun zum user wechseln, der sich angemeldet hatte und einige System-Befehle ausführen (u. a. Dateien mit dem Inhalt aus diesen Web-formularen im Home-Verzeichnis dieses users zu erzeugen). Die erzeugten Dateien sollen genau mit den Rechten versehen sein, als hätte der user sie tatsächlich selber erzeugt.
Suchst Du suEXEC?
Innerhalb Perl kannst Du den User nur wechseln, wenn das Script mit Root-Rechten läuft (das ist eine Einschränkung von Unix, nicht von Perl). Und das ist eine katastrophal schlechte Idee.
Meine erste Frage: Ist der Befehl "su " ausreichend sicher für sowas?
Nein. Laß das Script direkt mit den Rechten des Users laufen. Siehe suEXEC.
Wie ich verstanden habe, ist sudo eher dafür da, Rechte zu vergeben, die man normalerweise nicht hat (also nicht ganz das was ich will)
Nö, su und sudo sind zwei ähnliche Dinge. Große Unterschiede:
- su verlangt das root-Passwort, sudo das des Users
- su erlaubt alles, sudo kann sehr fein dosiert Rechte vergeben
- su braucht zwingend ein Passwort, sudo kann darauf verzichten
- su loggt wenn überhaupt nur minimal, sudo kann sehr detailiert loggen
Meine zweite Frage: Wie komme ich an den namen des users, der sich gerade angemeldet hat, ran?
Diese Information gibt Dir der Webserver mit. Wenn Du mit CGIs arbeitest, im Environment.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".