Mehr Rechte mit sudo

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der TIPPs & Tricks Sammlung.
Terminals / Shells X Portage System Dateisysteme Kernel Netzwerk Sonstiges alphabetischer Tipp Index



Wer kennt das Problem nicht, mal eben schnell einen Befehl auszuführen, der root-Rechte erfordert. Also auf die root-Konsole wechseln und den Befehl absetzten. Es gibt aber auch eine andere Möglichkeit: sudo

Sudo ermöglicht es dem Admin, mit Hilfe einer Konfig-Datei die Standard-Rechte zu verändern. In der Konfig-Datei kann festgelegt werden welche Benutzer/Gruppen welches Programm ausführen dürfen.

Inhaltsverzeichnis

[Bearbeiten] Installation

Das Programm wird in gewohnter Art und Weise installiert.

Code: Shell
emerge app-admin/sudo         # Die Sudo-Utilities.
emerge app-vim/sudo           # Das 'Visudo'-Package, um die Konfiguration unter VI zu bearbeiten.


[Bearbeiten] Konfiguration

Die Konfiguration wird in der Konfig-Datei /etc/sudoers festgelegt. Diese ist nicht direkt änderbar. Für das editieren gibt es ein spezielles Script, das wie folgt unter dem Benutzer Root gestartet wird.

Code: Shell
visudo

Danach öffnet sich der VI und die Konfig-Datei kann editiert werden.


[Bearbeiten] Ein Beispiel

Nachfolgendes Beispiel gibt einen kurzen Überblick der Möglichkeiten des Sudo-Befehls. Für den intensiveren Einstieg empfehle ich die Manpages zu sudo (man sudo) und sudoers (man sudoers) zu lesen.

Es soll eine Gruppe (hier:PUSER) auf einem Host (hier:zion) mounten, das System rebooten, anhalten und einen Shutdown durchführen können, ohne ein Passwort eingeben zu müssen. Es soll außerdem eine Gruppe (PNET) das Netzwerk hoch und runterfahren dürfen.

# /etc/sudoers

# Reset der Umgebungsvariablen
Defaults        env_reset

# User alias / Gruppen alias
# User_Alias    Variable = Liste von Usern
User_Alias      PUSERS = neo, morpheus, trinity
User_Alias      PNET = trinity, cypher

# Host alias
# Host_Alias    Variable = Liste von Hostsysteme
Host_Alias      SYSTEM = zion

# Cmnd alias
# Cmnd_Alias    Variable = Befehl_1, Befehl_2, Befehl_3, Befehl_n
Cmnd_Alias      EMERGE = /usr/bin/emerge
Cmnd_Alias      MOUNT = /bin/mount,/bin/umount
Cmnd_Alias      SHUTDOWN = /sbin/shutdown
Cmnd_Alias      HALT = /sbin/halt
Cmnd_Alias      REBOOT = /sbin/reboot
Cmnd_Alias      NET = /etc/init.d/net.eth* 

# User- und Gruppen-Rechte Spezifikation
# User/Benutzer server=(Befehl wir als XYZ ausgefuehrt) was_darf_er

# root darf alles
root    ALL = (ALL) ALL

# die Gruppe PUSERS duerfen ohne Passwortabfrage folgendes ausfuehren:
PUSERS  SYSTEM = NOPASSWD: MOUNT, SHUTDOWN, HALT, REBOOT

# die Gruppe PNET darf das Netzwerk hoch und runterfahren
# allerdings mit einer erneuten Passwortabfrage
# Benutzer "dozer" darf dies auch.
PNET    SYSTEM = NET
dozer   SYSTEM = NET

Nun kann man die Befehle wie folgt aufrufen. Hier mountet der Benutzer neo ein CD-Rom Laufwerk in den Ordner /mnt/cdrom. Dies geschieht laut obiger definition ohne eine Passwort-Abfrage.

Code: Shell
neo@zion ~ $ sudo mount /dev/hdc1 /mnt/cdrom 


Nun soll der User Dozer das Netzwerk hochfahren. Bei diesem Beispiel wird allerdings nach dem absetzten des Befehls nach einem Passwort gefragt. Dieses muss der User dozer mit seinem eigenen Passwort verifizieren.

Code: Shell
dozer@zion ~ $ sudo /etc/init.d/net.eth0 start 


[Bearbeiten] Hinweis

Das Programm ist sehr mächtig, also Vorsicht bei den Dingen die konfiguriert werden. Nicht umsonst gibt es Befehle/Programme, die nur mit Root-Rechten ausgeführt werden sollten.

'Persönliche Werkzeuge