BSD doas und Linux sudo

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:

1# WER    WO    ALS-WER  WIE       WAS
2myuser   ALL = (ALL)    NOPASSWD: ALL
  • 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:

1%sudo ALL = (ALL) NOPASSWD: ALL
2%wheel ALL = (ALL) NOPASSWD: ALL

Denn mit vorgestelltem % lassen sich alle Mitglieder einer Gruppe ansprechen.

Und wie fügt man seinen myuser Account zur sudo 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.