Doas: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Wichtxg (Diskussion | Beiträge)
Die Seite wurde neu angelegt: „Kategorie:Sicherheit Kategorie:Befehle OpenDoas ist eine portable Version des OpenBSD-Befehls doas, der dafür bekannt ist, dass er im Vergleich zu sudo wesentlich kleiner ist. Wie ''sudo'' wird ''doas'' benutzt, um die Identität eines anderen Benutzers auf dem System anzunehmen. {{installation|paket=opendoas|repo=community}} == Verwendung == Um ''doas'' als nicht-privilegierter Benutzer zu benutzen, muss es richtig ko…“
 
K Verschiebung community -> extra
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Sicherheit]]
{{SEITENTITEL:doas}}{{righttoc}}
[[Kategorie:Befehle]]
 
 
OpenDoas ist eine portable Version des OpenBSD-Befehls [[Wikipedia:doas|doas]], der dafür bekannt ist, dass er im Vergleich zu [[sudo]] wesentlich kleiner ist. Wie ''sudo'' wird ''doas'' benutzt, um die Identität eines anderen Benutzers auf dem System anzunehmen.
OpenDoas ist eine portable Version des OpenBSD-Befehls [[Wikipedia:doas|doas]], der dafür bekannt ist, dass er im Vergleich zu [[sudo]] wesentlich kleiner ist. Wie ''sudo'' wird ''doas'' benutzt, um die Identität eines anderen Benutzers auf dem System anzunehmen.


{{installation|paket=opendoas|repo=community}}
{{installation|paket=opendoas|repo=extra}}


== Verwendung ==
== Verwendung ==
Zeile 11: Zeile 8:
Um ''doas'' als nicht-privilegierter Benutzer zu benutzen, muss es richtig konfiguriert werden. Siehe [[#Konfiguration]].
Um ''doas'' als nicht-privilegierter Benutzer zu benutzen, muss es richtig konfiguriert werden. Siehe [[#Konfiguration]].


Um ''doas'' zu verwenden, stellen Sie einem Befehl und seinen Argumenten einfach {{ic|doas}} und ein Leerzeichen voran:
Um ''doas'' zu verwenden, gibt man einfach den gewünschten Befehl hinter {{ic|doas}} an.


  $ doas ''cmd''
  $ doas ''cmd''


Zum Beispiel, um [[pacman]] zu benutzen:
Zum Beispiel, um [[pacman]] zu benutzen.


  $ doas pacman -Syu
  $ doas pacman -Syu


Um eine interaktive Shell mit Root-Prompt aufzurufen:
Um eine interaktive Shell mit Root-Prompt aufzurufen.


  $ doas -s
  $ doas -s
Zeile 29: Zeile 26:
Ein [https://wiki.archlinux.org/title/PAM PAM]-Modul wird installiert, aber keine Standardkonfiguration oder Beispiele sind enthalten.  
Ein [https://wiki.archlinux.org/title/PAM PAM]-Modul wird installiert, aber keine Standardkonfiguration oder Beispiele sind enthalten.  


Um Mitgliedern der Gruppe [https://wiki.archlinux.org/title/Users_and_groups#Group_list wheel] zu erlauben, Befehle als andere Benutzer auszuführen, erstellen Sie eine Konfigurationsdatei mit dem folgenden Inhalt:
Um Mitgliedern der Gruppe [https://wiki.archlinux.org/title/Users_and_groups#Group_list wheel] zu erlauben, Befehle als andere Benutzer auszuführen, muss eine Konfigurationsdatei mit folgendem Inhalt erstellt werden. Die Konfigurationsdatei muss zudem mit einem Zeilenumbruch enden.


{{hc|/etc/doas.conf|
{{hc|/etc/doas.conf|
Zeile 35: Zeile 32:


}}
}}
{{Hinweis|Die Konfigurationsdatei muss mit einem Zeilenumbruch enden.}}


Der Eigentümer und die Gruppe für {{ic|/etc/doas.conf}} sollten beide {{ic|0}} sein, die Dateirechte sollten auf {{ic|0400}} gesetzt werden:
Der Eigentümer und die Gruppe für {{ic|/etc/doas.conf}} sollten beide {{ic|0}} sein, die Dateirechte sollten auf {{ic|0400}} gesetzt werden:
Zeile 42: Zeile 38:
  # chmod -c 0400 /etc/doas.conf
  # chmod -c 0400 /etc/doas.conf


Um {{ic|/etc/doas.conf}} auf Syntaxfehler zu überprüfen, führen Sie aus:
Um {{ic|/etc/doas.conf}} auf Syntaxfehler zu überprüfen, kann man folgendes benutzen.


  # doas -C /etc/doas.conf && echo "config ok" || echo "config error"  
  # doas -C /etc/doas.conf && echo "config ok" || echo "config error"  
Zeile 58: Zeile 54:
  permit|deny [options] identity [as target] [cmd command [args ...]]
  permit|deny [options] identity [as target] [cmd command [args ...]]


Für weitere Details lesen Sie [https://man.archlinux.org/man/doas.conf.5 doas.conf(5)].
Für weitere Details siehe die [[Manpage]] [https://man.archlinux.org/man/doas.conf.5 doas.conf(5)].
 
Erwägen Sie, [[Bash#Tab-Vervollständigung|Tab-Vervollständigung]] für den ''doas''-Befehl einzurichten.


== Tipps und Tricks ==
== Tipps und Tricks ==
Zeile 66: Zeile 60:
=== doas persist Funktion ===
=== doas persist Funktion ===


''doas'' bietet eine Persist-Funktion: Nachdem sich der Benutzer erfolgreich authentifiziert hat, wird für einige Zeit nicht mehr nach einem Passwort gefragt. Sie ist standardmäßig deaktiviert, aktivieren Sie sie mit der Option {{ic|persist}}:
''doas'' bietet eine Persist-Funktion: Nachdem sich der Benutzer erfolgreich authentifiziert hat, wird für einige Zeit nicht mehr nach einem Passwort gefragt. Sie ist standardmäßig deaktiviert. Die Funktion kann mittels der Option {{ic|persist}} aktiviert werden.


{{hc|/etc/doas.conf|
{{hc|/etc/doas.conf|
Zeile 76: Zeile 70:
=== Reibungsloser Übergang von sudo zu doas ===
=== Reibungsloser Übergang von sudo zu doas ===


Für einen reibungslosen Übergang von ''sudo'' zu ''doas'' und um abwärtskompatibel zu bleiben, können Sie in Ihrer Umgebung folgendes hinzufügen
Für einen reibungslosen Übergang von ''sudo'' zu ''doas'' und um abwärtskompatibel zu bleiben, kann man entweder einen [[ln|Symlink]] anlegen, oder Aliase benutzen.


  alias sudo='doas'
  alias sudo='doas'
  alias sudoedit='doas rnano'
  alias sudoedit='doas rnano'


Oder alternativ können Sie einen Symlink von ''doas'' dorthin legen, wo normalerweise ''sudo'' liegen würde (bietet keine [https://man.archlinux.org/man/sudo.8.en sudoedit(8)]):
  ln -s $(which doas) /usr/bin/sudo
 
  # ln -s $(welches doas) /usr/bin/sudo


{{AUR|opendoas-sudo}} bietet diesen Symlink ebenfalls an.
{{AUR|opendoas-sudo}} bietet diesen Symlink ebenfalls an.


{{Hinweis|Standardmäßig behält ''sudo'' einige Umgebungsvariablen bei, während ''doas'' dies nicht tut, insbesondere XAUTHORITY, LANG und LC_ALL. Das bedeutet, dass Sie ohne weitere Konfiguration weder grafische Anwendungen unter X starten noch auf das Gebietsschema des Benutzers zugreifen können. Um beispielsweise Mitgliedern der Gruppe ''wheel'' zu erlauben, grafische Anwendungen zu starten und auf das Gebietsschema des Benutzers zuzugreifen, verwenden Sie die Option setenv:
Standardmäßig behält ''sudo'' einige Umgebungsvariablen bei, während ''doas'' dies nicht tut, insbesondere XAUTHORITY, LANG und LC_ALL. Das bedeutet, dass ohne weitere Konfiguration weder grafische Anwendungen unter X starten das Gebietsschema des Benutzers verfügbar ist. Um beispielsweise Mitgliedern der Gruppe ''wheel'' zu erlauben, grafische Anwendungen zu starten und auf das Gebietsschema des Benutzers zuzugreifen, muss man die Option {{ic|setenv}}setzen.


{{hc|/etc/doas.conf|
{{hc|/etc/doas.conf|
allow setenv { XAUTHORITY LANG LC_ALL } :wheel
allow setenv { XAUTHORITY LANG LC_ALL } :wheel
}}
}}
}}


=== Bash-Tab-Vervollständigung ===
=== Bash-Tab-Vervollständigung ===


Standardmäßig vervollständigt die Bash nur Dateien und Verzeichnisse innerhalb des aktuellen oder referenzierten Verzeichnisses mit Tabs. Um die Bash zu veranlassen, Argumente so zu vervollständigen, als ob sie separate Befehle wären (und dabei auch die Tab-Vervollständigungseinstellungen anderer Befehle zu nutzen), kann das Folgende entweder dem Benutzer {{ic|.bashrc}} oder der globalen {{ic|/etc/bash.bashrc}} hinzugefügt werden:
Standardmäßig vervollständigt die Bash nur Dateien und Verzeichnisse innerhalb des aktuellen oder referenzierten Verzeichnisses mit Tabs. Um die Bash zu veranlassen, Argumente so zu vervollständigen, als ob sie separate Befehle wären (und dabei auch die Tab-Vervollständigungseinstellungen anderer Befehle zu nutzen), kann das Folgende entweder Userbezogen in die [[bashrc]] geschrieben, oder der globalen {{ic|/etc/bash.bashrc}} hinzugefügt werden.


{{hc|~/.bashrc|
{{hc|~/.bashrc|
Zeile 103: Zeile 94:


{{ÜberFDL||Seite=http://wiki.archlinux.org|Name=ArchLinux.org Wiki|Original=https://wiki.archlinux.org/title/Doas}}
{{ÜberFDL||Seite=http://wiki.archlinux.org|Name=ArchLinux.org Wiki|Original=https://wiki.archlinux.org/title/Doas}}
[[Kategorie:Sicherheit]]
[[Kategorie:Befehle]]

Aktuelle Version vom 24. Mai 2023, 18:18 Uhr

OpenDoas ist eine portable Version des OpenBSD-Befehls doas, der dafür bekannt ist, dass er im Vergleich zu sudo wesentlich kleiner ist. Wie sudo wird doas benutzt, um die Identität eines anderen Benutzers auf dem System anzunehmen.

Installation

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

pacman -S opendoas

Verwendung

Um doas als nicht-privilegierter Benutzer zu benutzen, muss es richtig konfiguriert werden. Siehe #Konfiguration.

Um doas zu verwenden, gibt man einfach den gewünschten Befehl hinter doas an.

$ doas cmd

Zum Beispiel, um pacman zu benutzen.

$ doas pacman -Syu

Um eine interaktive Shell mit Root-Prompt aufzurufen.

$ doas -s

Für weitere Informationen, siehe doas(1).

Konfiguration

Ein PAM-Modul wird installiert, aber keine Standardkonfiguration oder Beispiele sind enthalten.

Um Mitgliedern der Gruppe wheel zu erlauben, Befehle als andere Benutzer auszuführen, muss eine Konfigurationsdatei mit folgendem Inhalt erstellt werden. Die Konfigurationsdatei muss zudem mit einem Zeilenumbruch enden.

/etc/doas.conf
allow :wheel

Der Eigentümer und die Gruppe für /etc/doas.conf sollten beide 0 sein, die Dateirechte sollten auf 0400 gesetzt werden:

# chown -c root:root /etc/doas.conf
# chmod -c 0400 /etc/doas.conf

Um /etc/doas.conf auf Syntaxfehler zu überprüfen, kann man folgendes benutzen.

# doas -C /etc/doas.conf && echo "config ok" || echo "config error" 

Achtung: Es ist zwingend erforderlich, dass /etc/doas.conf frei von Syntaxfehlern ist!


Um Mitgliedern der Gruppe plugdev zu erlauben, smartctl ohne Passwort als root-Benutzer auszuführen:

/etc/doas.conf
permit nopass :plugdev as root cmd /usr/bin/smartctl

Die allgemeine Syntaxform von /etc/doas.conf lautet

permit|deny [options] identity [as target] [cmd command [args ...]]

Für weitere Details siehe die Manpage doas.conf(5).

Tipps und Tricks

doas persist Funktion

doas bietet eine Persist-Funktion: Nachdem sich der Benutzer erfolgreich authentifiziert hat, wird für einige Zeit nicht mehr nach einem Passwort gefragt. Sie ist standardmäßig deaktiviert. Die Funktion kann mittels der Option persist aktiviert werden.

/etc/doas.conf
allow persist :wheel

Hinweis: Die persist-Funktion ist standardmäßig deaktiviert, da sie neu und potentiell gefährlich ist. Im ursprünglichen doas wird eine Kernel-API benutzt, um Timeouts zu setzen und zu löschen. Diese API ist OpenBSD-spezifisch und es gibt keine ähnliche API auf anderen Betriebssystemen. Als Workaround wird die persist-Funktion mit Hilfe von Zeitstempeldateien ähnlich wie bei sudo implementiert.

Reibungsloser Übergang von sudo zu doas

Für einen reibungslosen Übergang von sudo zu doas und um abwärtskompatibel zu bleiben, kann man entweder einen Symlink anlegen, oder Aliase benutzen.

alias sudo='doas'
alias sudoedit='doas rnano'
ln -s $(which doas) /usr/bin/sudo

opendoas-sudoAUR bietet diesen Symlink ebenfalls an.

Standardmäßig behält sudo einige Umgebungsvariablen bei, während doas dies nicht tut, insbesondere XAUTHORITY, LANG und LC_ALL. Das bedeutet, dass ohne weitere Konfiguration weder grafische Anwendungen unter X starten das Gebietsschema des Benutzers verfügbar ist. Um beispielsweise Mitgliedern der Gruppe wheel zu erlauben, grafische Anwendungen zu starten und auf das Gebietsschema des Benutzers zuzugreifen, muss man die Option setenvsetzen.

/etc/doas.conf
allow setenv { XAUTHORITY LANG LC_ALL } :wheel

Bash-Tab-Vervollständigung

Standardmäßig vervollständigt die Bash nur Dateien und Verzeichnisse innerhalb des aktuellen oder referenzierten Verzeichnisses mit Tabs. Um die Bash zu veranlassen, Argumente so zu vervollständigen, als ob sie separate Befehle wären (und dabei auch die Tab-Vervollständigungseinstellungen anderer Befehle zu nutzen), kann das Folgende entweder Userbezogen in die bashrc geschrieben, oder der globalen /etc/bash.bashrc hinzugefügt werden.

~/.bashrc
complete -cf doas


Dieser Artikel (oder Teile davon) steht unter GNU FDL (GNU Freie Dokumentationslizenz) und ist eine Übersetzung aus dem ArchLinux.org Wiki. Am Original-Artikel kann jeder Korrekturen und Ergänzungen vornehmen. Im ArchLinux.org Wiki ist eine Liste der Autoren verfügbar.