PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Benutzer anlegen, Login verweigern



hever
06.09.03, 15:06
Hallo zusammen,
ich möchte mit dem Befehl useradd einen neuen Benutzer anlegen. Klappt auch alles soweit. Ich setze ein Password, setzte ein Homeverzeichnis etc. Ich möchte diesem User jetzt aber einen Login Verweigern. Also per SSH oder Lokal darf er sich nicht anmelden, nur per FTP... mit welcher Option geht dass ?

mfg
-hever-

elevator
06.09.03, 15:10
Gib dem User als Shell /bin/false .

Gruß elevator

hever
08.09.03, 11:55
Vielen dank, deine Lösung klappt super!

Jetzt habe ich noch ein weiteres Problem. Ich habe ein PERL Script mit folgendem Inhalt geschrieben:

system("useradd -c \"kommentar\" -d \"/var/www/$accountname\" -m -g \"group\" -p \"$accountpassword\" -s \"/bin/false\" $accountname") or die "fehler!";

wenn ich dieses Script als root auf der Konsole ausführe funktioniert alles. Ich möchte dieses Script aber über das Internet aufrufen. Wie ist es nun möglich den Befehl useradd ausführen zu können, der normale User darf dies ja nicht. Ich möchte auch nicht unbedingt mein root-passwort in diesen Script verwenden, zumindest nicht im Klartext.

danke im vorraus.
-hever-

xstevex22
08.09.03, 12:29
Hi!
Du kannst das so regeln, dass du mittels visudo folgenden Eintrag machst:

wwwrun ALL=NOPASSWD:useradd


dann kannst du mittels

system("sudo useradd -c \"kommentar\" -d \"/var/www/$accountname\" -m -g \"group\" -p \"$accountpassword\" -s \"/bin/false\" $accountname") or die "fehler!";

auch über ein webinterface user anlegen.

msi
08.09.03, 12:48
Original geschrieben von xstevex22
Hi!
Du kannst das so regeln, dass du mittels visudo folgenden Eintrag machst:

wwwrun ALL=NOPASSWD:useradd


dann kannst du mittels

system("sudo useradd -c \"kommentar\" -d \"/var/www/$accountname\" -m -g \"group\" -p \"$accountpassword\" -s \"/bin/false\" $accountname") or die "fehler!";

auch über ein webinterface user anlegen.

du musst aber auch bedeneken, dass sobald ein user deinen http-server cracken kann, er auch root rechte hat, da er sich einen benutzer mit uid 0 anlegen kann!!
eine bessere lösung wäre es ein eigenes useradd script zu schreiben, welches überprüft ob die uid schon vergeben ist, oder die uid selber setzt, dem also nur der username übergeben wird. du kannst in dem script überprüfen ob der user, der es ausführt wwwrun ist.
mit chmod +s script dem script das suid bit geben, dann kannst du dir das mit sudo sparen.

taylor
08.09.03, 12:54
Original geschrieben von msi
mit chmod +s script dem script das suid bit geben, dann kannst du dir das mit sudo sparen.
AFAIK kann man mit Skripten die Möglichkeit Suid Bit nicht nutzen.

msi
08.09.03, 12:59
bei perl gibts unter debian ein extra packet um das zu erreichen. perl-suid oder so ähnlich.

taylor
08.09.03, 13:03
Original geschrieben von msi
bei perl gibts unter debian ein extra packet um das zu erreichen. perl-suid oder so ähnlich.
Kannte ich noch nicht, danke für den Hinweis.

hever
08.09.03, 17:13
Hi!
Du kannst das so regeln, dass du mittels visudo folgenden Eintrag machst:

wwwrun ALL=NOPASSWD:useradd

Ich habe mich jetzt zunächst für den /etc/sudoers eintrag entschieden. Aber leider funktioniert dein Beispiel nicht. Ich erhalte die Fehlermeldung dass die syntax nicht stimmt. Kannst du es eventuell nochmal posten?

aus der manpage von sudoers werde ich leider nicht schlau.

danke im vorraus
-hever-

hever
08.09.03, 18:17
Hab selber schon eine Lösung gefunden. In meinem Fall geb ich apache an, sowie den kompletten pfad zum useradd.

apache ALL=NOPASSWD: /usr/sbin/useradd

hever
09.09.03, 20:47
Hallo,
ich habe ein Verständisproblem. Gebe ich dem User wwwrun oder apache die Berechtigung "useradd" auszuführen, so könnte dies jeder andere Benutzer auf dem Server ebenfalls in seinem Script verwenden.

Würde ich direkt in die Passwort-Datei schreiben, bräuchte ich wiederrum berechtigungen die danach von jedem Benutzer missbraucht werden könnten, da ich sie den besagten Usern geben würde.

Mein Script muss über dass Web von jedem Ausführbar sein. Jeder dürfte also übers Web einen User-Account mit dem fertigen Script erstellen.
Die im Script verwendeten Befehle dürfen aber von keinm anderen Benutzer in einem eigenem Script verwerndet werden, da sonst jeder einen Root-Account erstellen könnte.

Bitte um Hilfe bzw. Aufklärun
danke im Vorraus
-hever-

msi
09.09.03, 21:57
genau so ist es, deshalb rate ich dir es so zu machen wie ich es oben geschrieben habe!!!