Es gibt mehrere Möglichkeiten, das hängt davon ab, wie sicher, flexibel und einfach die Lösung sein soll. http://www.dcoul.de/infos/alle_macht_dem_user.html bietet auch noch weitere Informationen und Möglichkeiten.

Die Billig-Methode

Benutze vor solchen Befehlen su -. Das fragt zwar ständig nach dem root Kennwort, aber das ist am sichersten. :)

Man kann su auch direkt ein Kommando mitteilen, das als Root ausgeführt werden soll, z.B. su -c "make install". Die genaue Syntax variiert auf anderen UNIX-Systemen. -- MartinSchmitt 2002-11-03 07:52:12

Die 'orthodoxere' Methode

Mache Dich mit dem Programm sudo vertraut. Dies erlaubt root, ganz bestimmte Programme mit ganz bestimmten Parametern (zu ganz bestimmten Zeiten) auch ohne Kennwortabfrage normalen Benutzern zur Verfügung zu stellen. Beispiel:

# /etc/sudoers
#
jens    myhost=NOPASSWD: /etc/shutdown -h now

Dies erlaubt jens, auf dem Rechner myhost den Befehl shutdown -h now auszuführen (muss dann sudo shutdown -h now aufgerufen werden). Jens kann weder shutdown -r now ausführen noch kann jemand anders shutdown -h now ausführen. Jens benötigt dafür kein Kennwort.


-- MartinSchmitt 2002-11-03 07:45:35


Die flexible Methode

Funktioniert leider nicht mit allen Programmen, route will es z.B. u.U. gar nicht. Aber ansonsten reicht es, wenn Du eine Gruppe erstellst, sagen wir "trusted", und allen entsprechenden Programmen folgende Rechte gibst:

chown root.trusted /usr/sbin/PROGRAMM
chmod 4710 /usr/sbin/PROGRAMM

Das bedeutet, alle Gruppenmitglieder von trusted dürfen das Programm ausführen, aber nicht die binary Datei lesen (nur 'x' ist gesetzt), das Programm wird mit root-Rechten ausgeführt (die 4 am Anfang setzt das Set User ID Bit) und wer nicht der Gruppe trusted zugehört, darf gar nichts. Die Artikel über DateiRechte und DateiAttribute helfen, das vielleicht besser zu verstehen.

Dann fügt man einfach jeden, der "dürfen soll", der Gruppe trusted hinzu.

Diese SUID-Methode funktioniert nicht mit ShellScripts!

Die Hacker-Methode

Man kann obiges natürlich auch mit einem C-Programm erreichen. Hier ist es: scripts/suid-wrapper.c (Das kam von Ingvar Gilbert (ingvar@gmx.de), von mir etwas angepasst, hoffentlich gehts noch ;).

Dann das Programm mit gcc -Wall suid-wrapper.c -o suid-wrapper kompilieren, und mit

chown root suid-wrapper
chmod 4711 suid-wrapper

das SUID-Bit setzen. Wenn man nicht will, dass jeder darf, nimmt man 4710 und macht das so mit den Gruppen wie oben.

Anmerkungen:

RootBefehleAusführen (zuletzt geändert am 2007-12-23 22:46:20 durch localhost)