Sudo: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K anpassung vorlage:installation
Boenki (Diskussion | Beiträge)
K syntaktische Modernisierung
Zeile 1: Zeile 1:
{{SEITENTITEL:sudo}}{{righttoc}}
{{SEITENTITEL:sudo}}{{righttoc}}
[[en:Sudo]]
sudo (substitute user do) ist ein Befehl, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers (z.B. root) zu starten, während sudo alle Befehle und Argumente mitloggt. Der dauerhafte Wechsel der Identität erfolgt durch {{ic|sudo -s}}.
sudo (substitute user do) ist ein Befehl, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers (z.B. root) zu starten, während sudo alle Befehle und Argumente mitloggt. Der dauerhafte Wechsel der Identität erfolgt durch <code>sudo -s</code>.


Man benutzt <code>sudo</code> anstelle von <code>su</code>, um bestimmten Benutzern die Möglichkeit zu geben, gewisse Programme z.B. mit root-Rechten ausführen zu können, ohne das root-Passwort weitergeben zu müssen. Die Sicherheitsrichtlinien sind in der Datei <code>/etc/sudoers</code> gespeichert.
Man benutzt {{ic|sudo}} anstelle von {{ic|su}}, um bestimmten Benutzern die Möglichkeit zu geben, gewisse Programme z.B. mit root-Rechten ausführen zu können, ohne das root-Passwort weitergeben zu müssen. Die Sicherheitsrichtlinien sind in der Datei {{ic|/etc/sudoers}} gespeichert.


{{installation|repo=core|paket=sudo}}
{{installation|repo=core|paket=sudo}}
Zeile 10: Zeile 9:


== sudo für Benutzer einrichten ==
== sudo für Benutzer einrichten ==
Um den Benutzern (bestimmte) root-Privilegien zu geben muss die Datei <code>/etc/sudoers</code> als root mit dem Kommando <code>visudo</code> bearbeitet werden, da so eine Syntaxüberprüfung gewährleistet ist. Bei der direkten Bearbeitung ohne Prüfung - also mit einem anderen Editor - kann der kleinste Tippfehler dazu führen, dass man sich aus dem System aussperrt und nur über den Recovery-Modus wieder Zugang erhalten kann. Dies sollte daher unbedingt mit folgendem Kommando gemacht werden:
Um den Benutzern (bestimmte) root-Privilegien zu geben muss die Datei {{ic|/etc/sudoers}} als root mit dem Kommando {{ic|visudo}} bearbeitet werden, da so eine Syntaxüberprüfung gewährleistet ist. Bei der direkten Bearbeitung ohne Prüfung - also mit einem anderen Editor - kann der kleinste Tippfehler dazu führen, dass man sich aus dem System aussperrt und nur über den Recovery-Modus wieder Zugang erhalten kann. Dies sollte daher unbedingt mit folgendem Kommando gemacht werden:
 
  su
  su
  visudo
  visudo


Durch hinzufügen der Zeile
Durch hinzufügen der Zeile
  USERNAME  ALL=(ALL) ALL
  USERNAME  ALL=(ALL) ALL


werden dem entsprechenden Benutzer die gleichen Rechte gewährt wie root selbst, wobei <code>USERNAME</code> durch den jeweiligen Benutzernamen zu ersetzen ist.
werden dem entsprechenden Benutzer die gleichen Rechte gewährt wie root selbst, wobei {{ic|USERNAME}} durch den jeweiligen Benutzernamen zu ersetzen ist.
Will man einem Benutzer beispielsweise einen einzigen Befehl freischalten, ohne dass er das Passwort eingeben muss, muss folgende Zeile eingefügt werden:
Will man einem Benutzer beispielsweise einen einzigen Befehl freischalten, ohne dass er das Passwort eingeben muss, muss folgende Zeile eingefügt werden:
  USERNAME  ALL=NOPASSWD:/Pfad/zum/Programm
  USERNAME  ALL=NOPASSWD:/Pfad/zum/Programm


Wobei auch hier wieder <code>USERNAME</code> durch den Benutzernamen zu ersetzen ist.
Wobei auch hier wieder {{ic|USERNAME}} durch den Benutzernamen zu ersetzen ist.


== Bash-Completion für sudoer ==
== Bash-Completion für sudoer ==
Ist das Programm [[Bash-Completion|bash-completion]] installiert, werden Befehle in einem Terminal durch {{taste|tab}} automatisch vervollständigt. Das erspart zum Beispiel das komplette eingeben eines Dateinamens. Beispiel:  
Ist das Programm [[Bash-Completion|bash-completion]] installiert, werden Befehle in einem Terminal durch {{taste|tab}} automatisch vervollständigt. Das erspart zum Beispiel das komplette eingeben eines Dateinamens. Beispiel:  
  fir<TAB>
  fir<TAB>


ergibt in der Shell das Kommando:
ergibt in der Shell das Kommando:
  firefox
  firefox


Wollen Sudo-Benutzer Bash-Completion genießen muss die Datei ''~/.bashrc'' editiert werden:
Wollen Sudo-Benutzer Bash-Completion genießen muss die Datei ''~/.bashrc'' editiert werden:
  complete -cf sudo
  complete -cf sudo


== Beleidigungen ==
== Beleidigungen ==
Eine Kuriosität ist die Möglichkeit, sich bei falscher Passworteingabe von sudo beleidigen zu lassen.
Eine Kuriosität ist die Möglichkeit, sich bei falscher Passworteingabe von sudo beleidigen zu lassen.
Dazu muss in der Datei /etc/sudoers folgende Zeile ergänzt werden
Dazu muss in der Datei {{ic|/etc/sudoers}} folgende Zeile ergänzt werden
 
  Defaults insults
  Defaults insults


== Proxy Variabeln ==
== Proxy Variabeln ==
 
Da sudo die Proxy Variabeln nicht standardmäßig aus bash.bashrc übernimmt, muss unter dem Punkt "Defaults specification" in der sudoers folgendes eingetragen werden:
Da sudo die Proxy Variabeln nicht standartmäßig aus bash.bashrc übernimmt, muss unter dem Punkt "Defaults specification" in der sudoers folgendes eingetragen werden:
Defaults env_keep += "http_proxy"
 
Defaults env_keep += "https_proxy"
<pre>
Defaults env_keep += "ftp_proxy"
Defaults env_keep += "http_proxy"
Defaults env_keep += "https_proxy"
Defaults env_keep += "ftp_proxy"
</pre>


Damit werden die Proxy Variabeln aus den lokalen Nutzer mit übernommen und ggf. im Befehl verarbeitet.
Damit werden die Proxy Variabeln aus den lokalen Nutzer mit übernommen und ggf. im Befehl verarbeitet.
Zeile 59: Zeile 47:
== sudo mit KDE und Gnome ==
== sudo mit KDE und Gnome ==
Um Root-Rechte für grafische Programme zu erlangen sollte man auf keinen Fall sudo verwenden, da dieses nicht die Umgebungsvariablen korrekt setzt. Statt dessen ist '''kdesu''' bzw. '''gksu''' zu verwenden.
Um Root-Rechte für grafische Programme zu erlangen sollte man auf keinen Fall sudo verwenden, da dieses nicht die Umgebungsvariablen korrekt setzt. Statt dessen ist '''kdesu''' bzw. '''gksu''' zu verwenden.
=== Problem Fix für KDE ===
=== Problem Fix für KDE ===
Wenn es mit kdesu Probleme gibt kann es sein dass man die Datei '''/usr/share/config/kdesurc''' anlegen muß mit folgendem Inhalt:
Wenn es mit kdesu Probleme gibt kann es sein dass man die Datei '''/usr/share/config/kdesurc''' anlegen muss mit folgendem Inhalt:
 
  [super-user-command]
  [super-user-command]
  super-user-command=sudo
  super-user-command=sudo


== Deaktivieren des Root-Login ==
== Deaktivieren des Root-Login ==
{{Achtung|Arch Linux ist nicht optimiert für den Betrieb ohne Root-Account, es könnte also zu unerwarteten Problemen kommen.}}
{{Achtung|Arch Linux ist nicht optimiert für den Betrieb ohne Root-Account, es könnte also zu unerwarteten Problemen kommen.}}
Mit eingerichtetem sudo ist es sinnvoll den Root-Account abzuschalten.  
Mit eingerichtetem sudo ist es sinnvoll den Root-Account abzuschalten.  
Ohne Root-Account müssen Angreifer nicht nur ein Passwort [http://de.wikipedia.org/wiki/Brute-Force-Methode erraten] sondern auch den dazu passenden Nutzernamen.
Ohne Root-Account müssen Angreifer nicht nur ein Passwort {{wikipedia|Brute-Force-Methode|erraten}} sondern auch den dazu passenden Nutzernamen.
Es stellt also eine gewisse erhöhung der Sicherheit dar.
Es stellt also eine gewisse Erhöhung der Sicherheit dar.
{{Achtung|Bevor man den Root-Account deaktiviert sollte man sich vergewissern dass der eigene Nutznername wirklich mit sudo funktioniert!}}
{{Achtung|Bevor man den Root-Account deaktiviert sollte man sich vergewissern, dass der eigene Nutznername wirklich mit sudo funktioniert!}}
Der Root-Account kann gesperrt werden mit '''passwd''':
Der Root-Account kann gesperrt werden mit '''passwd''':
  # passwd -l root
  # passwd -l root
Zeile 85: Zeile 71:


[[Kategorie: Systemverwaltung]]
[[Kategorie: Systemverwaltung]]
[[en:Sudo]]

Version vom 1. Oktober 2013, 09:34 Uhr

sudo (substitute user do) ist ein Befehl, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers (z.B. root) zu starten, während sudo alle Befehle und Argumente mitloggt. Der dauerhafte Wechsel der Identität erfolgt durch sudo -s.

Man benutzt sudo anstelle von su, um bestimmten Benutzern die Möglichkeit zu geben, gewisse Programme z.B. mit root-Rechten ausführen zu können, ohne das root-Passwort weitergeben zu müssen. Die Sicherheitsrichtlinien sind in der Datei /etc/sudoers gespeichert.

Installation

Das Programm ist als sudo in core verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S sudo

Nach der Installation muss sudo noch konfiguriert werden.

sudo für Benutzer einrichten

Um den Benutzern (bestimmte) root-Privilegien zu geben muss die Datei /etc/sudoers als root mit dem Kommando visudo bearbeitet werden, da so eine Syntaxüberprüfung gewährleistet ist. Bei der direkten Bearbeitung ohne Prüfung - also mit einem anderen Editor - kann der kleinste Tippfehler dazu führen, dass man sich aus dem System aussperrt und nur über den Recovery-Modus wieder Zugang erhalten kann. Dies sollte daher unbedingt mit folgendem Kommando gemacht werden:

su
visudo

Durch hinzufügen der Zeile

USERNAME   ALL=(ALL) ALL

werden dem entsprechenden Benutzer die gleichen Rechte gewährt wie root selbst, wobei USERNAME durch den jeweiligen Benutzernamen zu ersetzen ist. Will man einem Benutzer beispielsweise einen einzigen Befehl freischalten, ohne dass er das Passwort eingeben muss, muss folgende Zeile eingefügt werden:

USERNAME   ALL=NOPASSWD:/Pfad/zum/Programm

Wobei auch hier wieder USERNAME durch den Benutzernamen zu ersetzen ist.

Bash-Completion für sudoer

Ist das Programm bash-completion installiert, werden Befehle in einem Terminal durch Tab ↹ automatisch vervollständigt. Das erspart zum Beispiel das komplette eingeben eines Dateinamens. Beispiel:

fir<TAB>

ergibt in der Shell das Kommando:

firefox

Wollen Sudo-Benutzer Bash-Completion genießen muss die Datei ~/.bashrc editiert werden:

complete -cf sudo

Beleidigungen

Eine Kuriosität ist die Möglichkeit, sich bei falscher Passworteingabe von sudo beleidigen zu lassen. Dazu muss in der Datei /etc/sudoers folgende Zeile ergänzt werden

Defaults insults

Proxy Variabeln

Da sudo die Proxy Variabeln nicht standardmäßig aus bash.bashrc übernimmt, muss unter dem Punkt "Defaults specification" in der sudoers folgendes eingetragen werden:

Defaults env_keep += "http_proxy"
Defaults env_keep += "https_proxy"
Defaults env_keep += "ftp_proxy"

Damit werden die Proxy Variabeln aus den lokalen Nutzer mit übernommen und ggf. im Befehl verarbeitet.

sudo mit KDE und Gnome

Um Root-Rechte für grafische Programme zu erlangen sollte man auf keinen Fall sudo verwenden, da dieses nicht die Umgebungsvariablen korrekt setzt. Statt dessen ist kdesu bzw. gksu zu verwenden.

Problem Fix für KDE

Wenn es mit kdesu Probleme gibt kann es sein dass man die Datei /usr/share/config/kdesurc anlegen muss mit folgendem Inhalt:

[super-user-command]
super-user-command=sudo

Deaktivieren des Root-Login

Achtung: Arch Linux ist nicht optimiert für den Betrieb ohne Root-Account, es könnte also zu unerwarteten Problemen kommen.

Mit eingerichtetem sudo ist es sinnvoll den Root-Account abzuschalten. Ohne Root-Account müssen Angreifer nicht nur ein Passwort erraten sondern auch den dazu passenden Nutzernamen. Es stellt also eine gewisse Erhöhung der Sicherheit dar.

Achtung: Bevor man den Root-Account deaktiviert sollte man sich vergewissern, dass der eigene Nutznername wirklich mit sudo funktioniert!

Der Root-Account kann gesperrt werden mit passwd:

# passwd -l root

Ein ähnlicher Befehl aktiviert ihn wieder.

$ sudo passwd -u root

Weblinks