sudo - root-Befehle als Benutzer ausführen | |
sudo = substitute user do ist ein Befehl, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers (z.B. des Superusers root) zu starten. Man benutzt sudo um bestimmten Benutzern die Möglichkeit zu geben, gewisse Programme mit Root-Rechten ausführen zu können ohne das Root-Passwort weitergeben zu müssen. Zum Beispiel um einem Benutzer den shutdown des Rechners zu ermöglichen, der eigentlich root vorbehalten ist. Die Sicherheitsrichtlinien
sind in der Datei Möchte man das ganze
für eine ganze Gruppe ermöglichen, muß ein &
vorangestellt werden: Aus Sicherheitsgründen
ist die Datei /etc/sudoers immer mit dem Hilfswerkzeug visudo
zu editieren, da es Fehler in der Syntax sofort erkennt. Es genügt
die simple Eingabe: Man kann auch Aliase
vergeben um ganze Gruppen von usern aufzunehmen, z.B. Übrigens werden unberechtigte sudo Aufrufe an root als Mail verschickt, damit root eventuelle Einbruchsversuche ins System sofort mitgeteilt bekommt. Beispiel für eine /etc/sudoers Datei:
Möchte man nicht
bei jedem Aufruf von root-Befehlen ein sudo voranstellen, gibt es
noch die Möglichkeit, die Identität zu wechseln und damit
root zu werden. Dafür gibt es einen Befehl, der eine winzige
Variante hat: su und su - Ohne das Minus wird man root in dem Verzeichnis, in welchem man beim Aufruf von su gewesen ist. Allerdings fehlt die komplette "root"-Umgebung, wie sie in /etc/profile(.local) steht. Insbesondere wird die Umgebungsvariable $PATH (der Suchpfad für Programme) nicht geändert. Man wird zwar "root", behält aber sämtliche Umgebungsvariablen des Users bei. Dies führt dazu, daß manche administrativen Programme nur mit einer Pfadangabe funktionieren. Mit su - wird man komplett als "root" eingeloggt (man bekommt eine Loginshell) und befindet sich anschließend auch im Heimatverzeichnis von "root". Außerdem wird $PATH um /sbin und /usr/sbin ergänzt - die in diesen Verzeichnissen enthaltenen Programme, die üblicherweise nur von root gebraucht werden, werden somit gefunden. Hinweis: Um auch
beim Aufruf von su ohne minus $PATH wie in älteren SUSE-Versionen
zu setzen, muß man in /etc/default/su die Option ALWAYS_SET_PATH=yes
setzen. sudo wurde ja schon weiter oben behandelt, trotzdem noch einmal die Erklärung: sudo = führt ein Kommando unter einem anderem Benutzer aus. Ohne User-Angabe wird root verwendet. kdesu = ist dasselbe wie sudo nur für die KDE-Desktopumgebung. Sozusagen das ausführen
von grafischen Programmen als root. Ein Beispiel: Man öffnet mit ALT-F2 den "Befehl
Ausführen"-Dialog und gibt kdesu konqueror ein und schon wird ein Konqueror mit root-Rechten gestartet, mit dem man Zugriff auf die root-Verzeichnisse hat, sowie sämtliche Konfigurations-Dateien die normalen Benutzern vorenthalten sind. Zwischen su und kdesu gibt es allerdings noch ein kleinen Unterschied den man schnell merkt, wenn man als root auf der Konsole ein grafisches Programm abstarten will. Warum kann ich als root auf der Konsole keine grafischen Programme starten?
Der Versuch ein Programm wie z.B. Kwrite auf einer Konsole bei der man als root angemeldet ist abzustarten, führt zu folgender Fehlermeldung: Möchte man zukünftig öfter Programme auf der Konsole mit root-Rechten starten, ist das ständige Angeben der DISPLAY-Variablen für root nervig und es empfiehlt sich diese schon beim Abstarten des Systems festzulegen. Leider gibt es da einen kleinen Stolperstein, denn geben wir in der ~/.bashrc von root die Variable an, wird sie bei jedem öffnen der bash erneut festgelegt. Dummerweise muß für das X11-Forwarding die Variable so verändert werden (Standardmäßig bekommt sie den Wert localhost:10.0), daß die Programme an den entfernten Client weiter gereicht werden können. Diese Veränderung der Umgebungsvariablen übernimmt ssh. Wird ssh mit der Option -X (großes X) aufgerufen, wird das X11-Forwarding aktiviert und die Display-Variable auf localhost:10.0 gesetzt, damit aufgerufene Programme an den entfernten Rechner weitergereicht werden. Dummerweise wird beim Login über ssh auch die bashrc aufgerufen und die veränderte DISPLAY-Variable durch unseren festgelegten Wert wieder zurück gesetzt. Dadurch werden die Programme nicht über das Netzwerk weiter gegeben, sondern auf dem lokalen Rechner geöffnet. Umgehen kann man das, in dem man die Variable auf Inhalt überprüft und nur wenn sie leer ist setzt. Dies erreicht man mit folgenden Zeilen die man der bashrc hinzufügen kann: |
|
Zurück zur Auswahl |