Hallo alle zusammen. Ich möchte über ein Webformular mit Hilfe von einem Perlscript einen neuen user anlegen. Außer das ich in dem Script system("/usr/sbin/useradd -p \"$pwd\" $username"); schreiben muss habe ich keine Ahnung. Wie kann ich das Script denn als root starten? Viele Grüße Manuel
Hallo Manuel, at Fri, 2 Aug 2002 14:59:04 +0200 Manuel Jenné wrote:
Ich möchte über ein Webformular mit Hilfe von einem Perlscript einen neuen user anlegen.
Hast Du Dir mal Webmin[1] angesehen? Warum installierst Du Dir nicht das. Damit kannst Du den kompletten Server fern administrieren. Bye Michael [1] http://www.webmin.com/ -- Toleranz kann man von den Rauchern lernen. Es hat sich noch nie ein Raucher über einen Nichtraucher beschwert. Registered Linux User #228306 ICQ #151172379 http://macbyte.info/ GNU-PG-Key ID 0140F88B
Hallo, On Fri, 02 Aug 2002 at 14:59 (+0200), Manuel Jenné wrote:
Ich möchte über ein Webformular mit Hilfe von einem Perlscript einen neuen user anlegen. Außer das ich in dem Script
system("/usr/sbin/useradd -p \"$pwd\" $username");
Pass aber auf, dass Du auf gültige Zeichen überprüfst. Nicht dass irgendwer als Username `/bin/rm -r /` eingibt und letztendlich /usr/sbin/useradd -p "geheim" `/bin/rm -r /` ausgeführt wird. Immerhin soll der Befehl mit Root-Rechten laufen!! Und Angreifer riechen sowas! Folgendes geht ab Perl 5.6: system("/usr/sbin/useradd", "-p", $pwd, $username); Somit startet Perl erst gar keine Shell sondern führt den Befehl direkt aus, was natürlich auch die Verwendung Shell-Mitteln wie `` $() etc. unmöglich macht. Wenn Du Perl >= 5.6 auf dem System hast, dann auf jeden Fall diese Methode verwenden, auch wenn ein paar Anführungszeichen mehr nötig sind.
schreiben muss habe ich keine Ahnung. Wie kann ich das Script denn als root starten?
Entweder sudo verwenden oder das Skript SDUI-root setzen und suidperl verwenden. Wie das geht, hatten wir bereits auf der Liste¹. Möglich wäre z. B. auch, für das Anlegen des Users ein eigenes, kleines Skript zu schreiben, dieses dann aus dem großen Skript heraus aufzurufen und nur dieses kleine Skript SUID-root zu setzen. Gruß, Bernhard ¹ Im Wesentlichen muss die /etc/permissions.local geändert werden: /usr/bin/suidperl root.root 4755 Dann muss SuSEconfig oder Check ausgeführt werden. -- "Freedom is just another word for nothing left to lose, Nothing don't mean nothing honey if it ain't free, now now. And feeling good was easy, Lord, when Bobby sang the blues, You know feeling good was good enough for me, Good enough for me and my Bobby McGee." -- Janis Joplin
Am 02.08.2002 um 15:08 schrieb Bernhard Walle:
Entweder sudo verwenden oder das Skript SDUI-root setzen und suidperl verwenden. Wie das geht, hatten wir bereits auf der Liste¹. Möglich wäre z. B. auch, für das Anlegen des Users ein eigenes, kleines Skript zu schreiben, dieses dann aus dem großen Skript heraus aufzurufen und nur dieses kleine Skript SUID-root zu setzen.
Oder beides. Also einen unprivilegierten Benutzer erstellen, der praktisch nichts anderes darf, als per sudo useradd auszuführen, und dem das suid-Skript gehört. Wenn du mehrere Benutzer auf dem Server hast, wäre es nämlich fatal, wenn der Apache-Benutzer pauschal useradd ausführen könnte. Andererseits würde es mich auch beunruhigen, wenn ein (öffentlich zugäng- liches) selbstgeschriebenes CGI mit root-Rechten laufen würde. Vielleicht hilft dir aber auch suEXEC weiter.
[..] -- "Freedom is just another word for nothing left to lose, Nothing don't mean nothing honey if it ain't free, now now. And feeling good was easy, Lord, when Bobby sang the blues, You know feeling good was good enough for me, Good enough for me and my Bobby McGee." -- Janis Joplin
Wenn ich mich recht entsinne, stammt der Song ursprünglich von Kris Kristofferson. MfG, Dennis -- Dennis Stosberg eMail: dennis@stosberg.net gpg key: http://stosberg.net/dennis.asc icq: 63537718
participants (4)
-
Bernhard Walle
-
Dennis Stosberg
-
Manuel Jenné
-
Michael Raab