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 <<DateTime(2002-11-03T07: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. ---- * Die Angabe des Hostnamens ist für den Fall gedacht, dass man eine sudo-Konfiguration zentral für einen ganzen Maschinenpark pflegen will. Anstelle von {{{myhost}}} kann man da auch einfach {{{ALL}}} schreiben, ohne was kaputt zu machen. * Die {{{/etc/sudoers}}} sollte niemals direkt bearbeitet werden, sondern nur über den von sudo bereit gestellten Befehl {{{visudo}}} - dieser führt vor dem Speichern einen Syntax-Check durch. Wichtig ist das auf Maschinen, für die man überhaupt kein Root-Passwort hat, und wo man aufpassen muss, dass man sich nicht selbst aussperrt. * Nur um das klar zu stellen: Wenn da nicht {{{NOPASSWD}}} steht, fragt Sudo '''nicht''' nach dem Root-Kennwort, sondern sicherheitshalber nach dem Kennwort des Users, der sudo ausführt. Dieses Kennwort wird dann für einige Minuten zwischengespeichert, falls man noch mehr Befehle über sudo ausführen muss. Darüber scheint es öfter mal Missverständnisse zu geben. -- MartinSchmitt <<DateTime(2002-11-03T07: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 ShellScript``s! = 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: * 4711 ist hier keine 'random number', sondern voll beabsichtigt. * Man MUSS das Programm anpassen, in Bezug auf die auszuführenden Befehle.