Script als root starten
Hallo alle zusammen, ich habe mir ein Script geschrieben um neue Virtualhosts anzulegen etc. damit das Script allerdings anständig läuft muss ich es als root ausführen wegen Befehlen wie z.B useradd etc. Ich möchte aber diese Script einem beliebigen user als Shell hinterlegen damit er es auch benutzen kann. Wie kann ich es veranlassen das dieses Script mit rootrechten läuft? Viele Grüße Manuel Jenné
Hallo Manuel, at Sat, 15 Jun 2002 23:11:41 +0200 Manuel Jenné wrote:
Ich möchte aber diese Script einem beliebigen user als Shell hinterlegen damit er es auch benutzen kann.
Man, hast Du viel vertrauen zu Deinen Usern. ;) Ich würde davon abraten.
Wie kann ich es veranlassen das dieses Script mit rootrechten läuft?
Durch setzen des UID-Bits müsste es gehen. Bye Michael -- "Al-gebra. Das sind Summen mit Buchstaben und so. Fuer Leute, die fuer Zahlen nicht intelligent genug sind." -- Terry Pratchett, Fliegende Fetzen Registered Linux User #228306 ICQ #151172379 http://macbyte.info/ GNU-PG-Key ID 0140F88B
Michael Raab schrieb:
at Sat, 15 Jun 2002 23:11:41 +0200 Manuel Jenné wrote:
Ich möchte aber diese Script einem beliebigen user als Shell hinterlegen damit er es auch benutzen kann.
Wie kann ich es veranlassen das dieses Script mit rootrechten läuft?
Durch setzen des UID-Bits müsste es gehen.
Nein, das SUID-Bit ist nur bei Binär-Programmen erlaubt. Er hat sich aber wie es aussieht ein Shell-Skript geschrieben. Entweder sudo benutzen oder ein C-Programm basteln, daß nix anderes tut, als das Skript aufzurufen. Das C-Programm wird dann SUID-root gesetzt, somit läuft auch das aufgerufene Skript mit root-Rechten.
* Patrick Hess schrieb am 15.Jun.2002:
Michael Raab schrieb:
at Sat, 15 Jun 2002 23:11:41 +0200 Manuel Jenné wrote:
Ich möchte aber diese Script einem beliebigen user als Shell hinterlegen damit er es auch benutzen kann.
Wie kann ich es veranlassen das dieses Script mit rootrechten läuft?
Durch setzen des UID-Bits müsste es gehen.
Nein, das SUID-Bit ist nur bei Binär-Programmen erlaubt. Er hat sich aber wie es aussieht ein Shell-Skript geschrieben.
Entweder sudo benutzen oder ein C-Programm basteln, daß nix anderes tut, als das Skript aufzurufen. Das C-Programm wird dann SUID-root gesetzt, somit läuft auch das aufgerufene Skript mit root-Rechten.
Und so ein C-Programm gibt es schon und nennt sich sudo. Auch su1 ist ein solches Programm. Also man sudo und/oder man su1 Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: http://localhost/doc/sdb/de/html/index.html | mit Apache: http://localhost/doc/sdb/de/html/key_form.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2
Am 15.06.2002 um 23:11 schrieb Manuel Jenné:
ich habe mir ein Script geschrieben um neue Virtualhosts anzulegen etc. damit das Script allerdings anständig läuft muss ich es als root ausführen wegen Befehlen wie z.B useradd etc. Ich möchte aber diese Script einem beliebigen user als Shell hinterlegen damit er es auch benutzen kann. Wie kann ich es veranlassen das dieses Script mit rootrechten läuft?
SUID-root Skripte sind eine schlechte Idee. Erstens funktioniert das auf vielen Systemen nicht, zweitens birgt es Gefahren. Stell dir vor, dein Benutzer ändert vor der Ausführung des SUID-root-Skriptes seinen $PATH. Dann kann er z.B. ein selbstgeschriebenes Programm/Skript namens "useradd" ausführen. Leg besser eine neue Gruppe (z.B. wwwadmin) an. Dein Benutzer kommt in diese Gruppe. Die https.conf sollte root.wwwadmin gehören und die Rechte 664 haben. Dann hast du genau, was du möchtest. Einfacher und sicherer. -- Dennis Stosberg eMail: dennis@stosberg.net pgp key: http://stosberg.net/dennis.asc icq: 63537718
Hallo Dennis, Dennis Stosberg schrieb:
SUID-root Skripte sind eine schlechte Idee. Erstens funktioniert das auf vielen Systemen nicht, zweitens birgt es Gefahren. Stell dir vor, dein Benutzer ändert vor der Ausführung des SUID-root-Skriptes seinen $PATH. Dann kann er z.B. ein selbstgeschriebenes Programm/Skript namens "useradd" ausführen.
Ok, nun könnte einen ja der Ehrgeiz packen und man setzt in dem suid-Script die PATH-Variable, auch IFS, benutzt nur absolute Pfadnamen, prüft Eingaben auf unerlaubte Zeichen usw. Auch in anderen Programmiersprachen muss man sein Programm immer schön bullet-proofed halten. In http://www.samag.com/documents/s=1149/sam0106a/0106a.htm wird aber darauf hingewiesen, dass das alles bei suid-shell-Scripten nichts nützt, weil eine race-condition möglich ist wenn der Angreifer einen sym. Link auf das Script erzeugt und dann den sym. Link aufruft. Beim Starten des Scripts wird vom System erst eine neue Shell gestartet, die Shell liest dann das Script ein. Verlangsamt ein Angreifer das System, kann er just zwischen Starten des neuen Prozesses und einlesen des Scriptes den sym. Link löschen und ein Script plazieren, welches ihm eine root-Shell öffnet. Bei Solaris sei das nicht möglich, da dem vom System gestarteten Prozess nicht der Dateiname sondern ein file handle auf das Script übergeben werde. Wie ist denn das bei Linux? Ist diese Info veraltet oder besteht diese Lücke immer noch? Wenn nicht, gibt es weitere Gründe gegen suid-root-Scripten? Gruß christian
Am 17.06.2002 um 11:20 schrieb Christian Schult:
Ok, nun könnte einen ja der Ehrgeiz packen und man setzt in dem suid-Script die PATH-Variable, auch IFS, benutzt nur absolute Pfadnamen, prüft Eingaben auf unerlaubte Zeichen usw. Auch in anderen Programmiersprachen muss man sein Programm immer schön bullet-proofed halten.
Zu aufwaendig, zu unsicher. In 90% der Faelle geht es anders, wie auch in den Fall, um den es in diesem Thread ging. Fuer den Rest kann man sich gerade etwas in C oder Perl (suidperl) basteln. Oder gleich sudo nehmen.
In http://www.samag.com/documents/s=1149/sam0106a/0106a.htm wird aber darauf hingewiesen, dass das alles bei suid-shell-Scripten nichts nützt, weil eine race-condition möglich ist wenn der Angreifer einen sym. Link auf das Script erzeugt und dann den sym. Link aufruft. [..]
Das Syenario kannte ich noch nicht. Klingt sich plausibel, aber gehoert wohl zu den theoretischeren Angriffsmoeglichkeiten.
Wenn nicht, gibt es weitere Gründe gegen suid-root-Scripten?
Wenn du es richtig machen willst ist es zu viel Aufwand fuer ein viel zu unsicheres Konzept. Es kann zu schnell zu viel schiefgehen. Man sollte sich nicht durch die Moeglichkeit eines suid-Skriptes verfuehren lassen, auch wenn es schoen bequem und einfach ist. -- Dennis Stosberg eMail: dennis@stosberg.net dstosber@techfak.uni-bielefeld.de pgp key: http://stosberg.net/dennis.asc icq: 63537718
participants (6)
-
B.Brodesser@t-online.de
-
Christian Schult
-
Dennis Stosberg
-
Manuel Jenné
-
Michael Raab
-
patrick_hess@t-online.de