PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : useradd/userdel für eine Gruppe freigeben?



ewe
24.10.04, 18:20
Hallo.

Ich möchte über ein Script user anlegen und löschen können. PRoblem: Das Script sollte nicht grade als root laufen... Also ich hab jetzt eine Gruppe fürs Script angelegt und useradd & Co chgrp'd und auf g+rx gestellt. Allerdings bekomme ich als Antwort nur "useradd: unable to lock password file". Sys ist eine Debian Woody.

Eine Idee, wie ichs dennoch zulasse oder kann mir jemand helfen ein Script zu erstellen, das usernamen aus einer Textdatei ausliest und entsprechend per cron periodisch ändert? Habe mit Bash & Co noch nicht wirklich viel programmiert...

TNX schonmal

nordi
24.10.04, 18:40
Also um Benutzer zu löschen oder hinzuzufügen wirst du ganz zwangsläufig root-Rechte benötigen. Spätestens wenn die Eigentumsrechte am Homeverzeichnis auf den neuen Nutzer übertragen willst (chown) musst du root sein (oder quasi-root Privilegien haben). Deine Zielstellung wird wohl kaum zu erreichen sein.

Warum soll es denn eigentlich nicht als root arbeiten?

derRichard
24.10.04, 19:39
hallo!

mit sudo kannst du das lösen.

//richard

ewe
24.10.04, 21:47
Warum soll es denn eigentlich nicht als root arbeiten?

Mein kleines PHP-Script soll am Ende im LAN aufgerufen werden. Nur ist der Apache auch im INet - zwar ist das Script auf IP beschränkt, aber Apache mit root muss nicht grade sein...

Wegen chmod: Die Rechtevergabe läuft - das sollte kein Problem sein...


mit sudo kannst du das lösen.

Hatte ich schon versucht, aber ich komme mit der Config nicht so ganz klar...

Ich kann über PHP soweit mir bekannt ist immer nur einen Befehl ausführen - keine Eingaben. Schlechte Voraussetzungen für sudo - denn das will eine Passworteingabe... Jetzt habe ich in die sudoers mal das folgende geschrieben:


nobody ALL=(ALL) NOPASSWD:/usr/sbin/useradd
nobody ALL=(ALL) NOPASSWD:/usr/sbin/userdel

Nur spuckt mir sudo dann nur ein "parse error in /etc/sudoers" entgegen...

Gibts da eine Mmöglichkeit das PW direkt im Befehl mitzugeben? Oder was ist an meiner Zeile falsch?

Mit "nobody ALL=(ALL) NOPASSWD: ALL" funktionierts - aber zu offen muss es dann doch nicht sein...

tictactux
24.10.04, 23:59
nobody ALL=(ALL) NOPASSWD:/usr/sbin/useradd
nobody ALL=(ALL) NOPASSWD:/usr/sbin/userdel

Nur spuckt mir sudo dann nur ein "parse error in /etc/sudoers" entgegen...

Gibts da eine Mmöglichkeit das PW direkt im Befehl mitzugeben? Oder was ist an meiner Zeile falsch?

Du solltest zunächst den Hinweis in /etc/sudoers beherzigen, der da lautet:
# This file MUST be edited with the 'visudo' command as root.

Dann wirst Du auch sofort auf Syntaxfehler hingewiesen.

Korrekter Eintrag wäre:



nobody ALL = NOPASSWD : /usr/sbin/userdel, /und_noch_dies/bin/*


hth
wolfgang

nordi
25.10.04, 18:05
Dann solltest du in deinem PHP Skript (oder in sudo) aber __ganz__ genau die möglichen Parameter filtern. Ansonsten löscht dir jemand den root Nutzer, packt sich selbst in die Gruppe shadow, oder gibt ein falsches Skel Verzeichnis an. Und dann hat man im Endeffekt doch wieder Root-Rechte.

Der Benutzername "-g shadow foobar" könnte ganz gut durch dein PHP Skript durchrutschen und würde auch funktionieren. Kommt natürlich drauf an wer das Skript denn benutzt und ob du Leute in deinem LAN hast, die des IP-Spoofings mächtig sind.

ewe
25.10.04, 18:35
Dann solltest du in deinem PHP Skript (oder in sudo) aber __ganz__ genau die möglichen Parameter filtern.

Das is klar... Ist schon mal von Anfang an per htaccess und interner Auth geschützt und die Gruppe ist fest drin. User wird auch gefiltert - also das sollte erst mal reichen...


# This file MUST be edited with the 'visudo' command as root.

Hmmm... Ich hatte es eigentlich versucht, aber visudo ging nicht... Komisch - jetzt öffnet ers... War vielleicht doch mit su ent-rooted :confused:

Naja, ich bedanke misch schonmal - scheint alles problemlos zu funktionieren. TNX!