Sudo: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) K anpassung vorlage:installation |
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
(11 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{SEITENTITEL:sudo}}{{righttoc}} | {{SEITENTITEL:sudo}}{{righttoc}} | ||
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 | |||
Man benutzt | 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 | {{installation|paket=sudo|repo=core}} | ||
== sudo für Benutzer einrichten == | == sudo für Benutzer einrichten == | ||
Um den Benutzern (bestimmte) root-Privilegien zu geben muss die Datei | 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 | ||
{{Hinweis|visudo liest die Variable EDITOR aus, die standardmäßig euf vi eingestellt ist. Wenn man die Variable nicht ändert, funktioniert visudo also wie vi/vim. Um in den Eingabemodus zu gelangen, muss nach Start {{taste|I}} gedrückt werden. Möchte man die Änderungen speichern und das Programm beenden, so betätigt man {{taste|Esc}} und gibt anschließend {{ic|:wq!}} ein.}} | |||
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 | 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 | Wobei auch hier wieder {{ic|USERNAME}} durch den Benutzernamen zu ersetzen ist. | ||
Es kann auch sinnvoll sein, sudo für alle Mitglieder einer Gruppe einzurichten. Hierfür eignet sich die schon von vornherein vorhandene Gruppe '''wheel'''. Dazu ergänzt man die {{ic|/etc/sudoers}} um | |||
%wheel ALL=(ALL) ALL | |||
Damit haben '''alle''' Benutzer, die in der Gruppe {{ic|wheel}} Mitglied sind sudo-Rechte, und können damit '''alle''' Programme ausführen, für die man eigentlich root-Rechte benötigt. | |||
== Bash-Completion für sudoer == | == Bash-Completion für sudoer == | ||
Zeile 41: | Zeile 45: | ||
== 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: | |||
Defaults env_keep += "http_proxy" | |||
Defaults env_keep += "https_proxy" | |||
Defaults env_keep += "ftp_proxy" | |||
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. | Damit werden die Proxy Variabeln aus den lokalen Nutzer mit übernommen und ggf. im Befehl verarbeitet. | ||
Zeile 59: | Zeile 60: | ||
== 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 | 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 | 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 | Es stellt also eine gewisse Erhöhung der Sicherheit dar. | ||
{{Achtung|Bevor man den Root-Account deaktiviert sollte man sich vergewissern dass der eigene | {{Achtung|Bevor man den Root-Account deaktiviert sollte man sich vergewissern, dass der eigene Nutzername 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 | ||
Ein ähnlicher Befehl aktiviert ihn wieder. | Ein ähnlicher Befehl aktiviert ihn wieder. | ||
$ sudo passwd -u root | $ sudo passwd -u root | ||
Zeile 82: | Zeile 84: | ||
* [http://de.wikipedia.org/wiki/Sudo Wikipedia-Seite zu sudo] {{sprache|de}} | * [http://de.wikipedia.org/wiki/Sudo Wikipedia-Seite zu sudo] {{sprache|de}} | ||
* [http://www.courtesan.com/sudo/man/sudoers.html Das "Sudoers Manual"] {{sprache|en}} | * [http://www.courtesan.com/sudo/man/sudoers.html Das "Sudoers Manual"] {{sprache|en}} | ||
[[Kategorie: Systemverwaltung]] | [[Kategorie: Systemverwaltung]] | ||
[[Kategorie: Befehle]] | |||
[[en:Sudo]] |
Aktuelle Version vom 25. April 2022, 09:22 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.
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
Hinweis: visudo liest die Variable EDITOR aus, die standardmäßig euf vi eingestellt ist. Wenn man die Variable nicht ändert, funktioniert visudo also wie vi/vim. Um in den Eingabemodus zu gelangen, muss nach Start I gedrückt werden. Möchte man die Änderungen speichern und das Programm beenden, so betätigt man Esc und gibt anschließend :wq!
ein.
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.
Es kann auch sinnvoll sein, sudo für alle Mitglieder einer Gruppe einzurichten. Hierfür eignet sich die schon von vornherein vorhandene Gruppe wheel. Dazu ergänzt man die /etc/sudoers
um
%wheel ALL=(ALL) ALL
Damit haben alle Benutzer, die in der Gruppe wheel
Mitglied sind sudo-Rechte, und können damit alle Programme ausführen, für die man eigentlich root-Rechte benötigt.
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 Nutzername 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