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
myuserAccount zursudoGruppe 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.
