BSD doas und Linux sudo
« | 21 Jan 2023 | »Sich als root
in einem Unix System
einzuloggen gehört bzw. ist verboten.
In SSH gilt das ganz besonders.
Und nachdem das klassische su
auch gefährlich bzw. nachteilig ist,
wurde sudo
für BSD
erfunden, mit dem Linux
ebenso glücklich wurde.
Doch den BSDlern wurde sudo
auch wieder zu unsicher, weshalb sie mit
doas das ganze nochmal neu implementierten.
Die Hintergründe für doas
vs. sudo
sind eine andere Geschichte, ich
weiß nur, dass sudo
viele Features und damit Codes umfasst, die ein
System wieder unsicher machen können, weshalb doas
als entschlacktes
sudo
neugestartet wurde.
Doch nicht jede Distribution bzw. Installation bereitet dieses Hilfsmittel
vor und somit ist der erste Schritt nach einer Linux oder BSD Installation
die Einrichtung von sudo
oder doas
.
sudo unter Linux
sudo
fehlt zwar selten in einer Linux-Distribution, doch um sicher zu sein,
startet man:
- Debian:
apt install sudo
- Alpine:
apk add sudo
- SUSE:
zypper install sudo
Nun folgt die Definition, welcher Account per sudo
root-Rechte erhalten soll.
Das wird in der Regel über die Datei /etc/sudoers
gesteuert.
Will man den eigenen Account namens myuser
zu solchen Rechten verhelfen,
reicht die zusätzlich Zeile:
- Der Benutzer
myuser
- darf auf jedem Host (erstes
ALL
) - als jeder Benutzer (zweites
ALL
) - ohne Passwort (
NOPASSWD
) - jedes Kommando ausführen (drittes
ALL
)
Lässt man NOPASSWD:
weg, muss man beim sudo
Aufruf sein Passwort eintippen.
1myuser ALL = (ALL) ALL
Die bessere und vorgeschlagene Variante ist aber eine andere:
Man erteilt einer Gruppe das Recht, mit sudo
alles ausführen zu dürfen und
fügt den Benutzer dieser Gruppe hinzu.
Je nach Distribution heißt diese Gruppe entweder direkt sudo
oder
wheel
(früher auch noch admin
).
In /etc/sudoers
steht eine von folgenden Beispielzeilen:
Denn mit vorgestelltem %
lassen sich alle Mitglieder einer Gruppe ansprechen.
Und wie fügt man seinen
myuser
Account zursudo
Gruppe hinzu?
1usermod --append --groups sudo myuser
bzw. in Kurzform:
1usermod -a -G sudo myuser
Anwendung
Ein cat /etc/sudoers
sollte bei nicht-root
Benutzern einen Zugriffsfehler
auslösen.
Aber sudo cat /etc/sudoers
wird den Dateiinhalt ausgeben.
Interessant ist noch sudo -E my_root_comamnd params
, wo die Environment
Variablen des nicht-privilegierten Accounts an den privilegierten Prozess
übergeben werden. Fehlt -E
, so startet der Prozess mit Standard
env-Variablen von root
.
doas in BSD
Ein fehlendes doas
wird einfach per
- FreeBSD:
pkg install doas
- NetBSD und OpenBSD:
pkg_add doas
nachinstalliert.
Die primäre Konfigurationsdatei heißt
/usr/local/etc/doas.conf
in FreeBSD bzw.
/etc/doas.conf
in Net- und OpenBSD.
Um hier den Account myuser
zu berechtigen, sollte eine Zeile auf
1permit keepenv nopass myuser
lauten. Lässt man nopass
weg, muss das Passwort eingetippt werden.
keepenv
überträgt die Umgebungsvariablen des eigenen Benutzers auf den
Prozess, der als root
laufen soll, ohne keepenv
startet den Prozess mit
Standard env-Variablen.
Natürlich kann man auch hier gleich alle Mitglieder einer Gruppe
(wie wheel
) berechtigen mit:
1permit keepenv nopass :wheel
Hier kündigt der :
eine Gruppe an.
Um den Benutzer myuser
in die Gruppe wheel
aufzunehmen, ist das Kommando
1pw group mod wheel -m myuser
erforderlich.
Anwendung
Ein cat /etc/master.passwd
sollte allen nicht-root
Usern verboten sein,
doch mit
doas cat /etc/master.passwd
werden die Geheimnisse offenbart.
Fazit
Natürlich kann man in beiden Tools noch viele wunderbare Regeln definieren,
und z.B.: nur bestimmte Programme zulassen.
Doch auf meinen eigenen Systemen (und auch in manchen Embedded Produkten),
reicht es aus, einem speziellen Admin-User per sudo
/doas
quasi alles
zu erlauben.
Denn genau das ist es, was Administratoren am Ende brauchen.
Andere Dienste sollten gar nicht in die Verlegenheit kommen, dass sie mehr
Rechte für bestimmte Prozesse brauchen.
Doch falls das wirklich notwendig ist, bieten beide Tools die Möglichkeit,
viel feingradigere Abstufungen vorzunehmen.
sudo
und doas
sind nun seit über 15 Jahren meine stetigen Begleiter,
und ich vermute, dass das auch so bleiben wird.