15.5 Benutzer- und Gruppenverwaltung über die Kommandozeile
In Abschnitt 15.5.1 und Abschnitt 15.5.2 geht es um die Verwaltung der Benutzer und Gruppen über die Kommandozeile. Die gesamte Verwaltung der Benutzer und Gruppen erfolgt hier über das Kommando samba-tool. Das samba-tool ist die Zusammenfassung der unter Samba 3 bekannten net-Tools und des Kommandos pdbedit und ersetzt diese bei der Verwaltung von Gruppen und Benutzern vollständig.
Als Linux-Administrator werden Sie anfangs versuchen, alle Benutzer und Gruppen über die Kommandozeile zu verwalten, was theoretisch möglich ist. Aber Sie werden sehr schnell feststellen, dass es an manchen Stellen einfacher ist, Benutzer über die RSAT zu verwalten (siehe Abschnitt 15.6) – besonders, wenn es darum geht, die Vielzahl an Attributen eines Benutzers zu verändern.
Als Windows-Administrator werden Sie hingegen schnell die Vorzüge der Verwaltung der Benutzer und Gruppen über die Kommandozeile schätzen lernen. Das gilt besonders dann, wenn Sie mehrere Benutzer auf einmal anlegen wollen, denn dann können Sie das Kommando samba-tool recht einfach in Shell-Skripten einsetzen.
Deshalb folgt zunächst eine ausführliche Erklärung der Gruppen- und Benutzerverwaltung über die Kommandozeile mit aussagekräftigen Beispielen. In Abschnitt 15.5.3 befassen wir uns dann mit Passwortrichtlinien.
15.5.1 Verwaltung von Gruppen über die Kommandozeile
Mit dem Kommando samba-tool group verwalten Sie die Gruppen. Zu dem Kommando gibt es die verschiedenen Optionen für die Verwaltung. Wenn Sie auf der Kommandozeile nur das Kommando samba-tool group eingeben, dann erhalten Sie eine Hilfe zu dem Kommando.
In den folgenden Abschnitten werden alle Subkommandos erläutert, aber nicht in der Reihenfolge, wie sie in der Hilfe aufgelistet sind. So haben Sie die Möglichkeit, alle Beispiele direkt auszuprobieren.
Auflisten der Gruppen mit »group list«
Eine Übersicht über alle Gruppen im System erhalten Sie, wie in Listing 15.21 zu sehen, mit samba-tool group list:
root@adminbuch:~# samba-tool group list
Allowed RODC Password Replication Group
[…]
Schema Admins
Domain Users
Replicator
IIS_IUSRS
DnsAdmins
Guests
Users
Listing 15.21 Auflisten der Gruppen
Hier sehen Sie eine Liste von Gruppen, die nach der Installation des Systems vorhanden sind. Bei diesen Gruppen handelt es sich um Gruppen, die auch für die Verwaltung des AD unter Windows benötigt werden.
[ ! ] Löschen Sie keine der Gruppen
Löschen Sie keine der hier aufgelisteten Gruppen aus Ihrem System! Alle diese Gruppen haben eine feste Bedeutung in der Windows-Welt und werden immer mit einem festen Security Identifier (SID) verwaltet. Wenn Sie eine der Gruppen löschen, kann das dazu führen, dass Sie Ihre Domäne neu aufsetzen müssen.
Auflisten der Gruppenmitglieder einer Gruppe mit »group listmembers <group>«
Wenn Sie wissen wollen, welche Benutzer Mitglied einer Gruppe sind, können Sie, wie in Listing 15.22 zu sehen, dies mit samba-tool group listmembers <group> überprüfen:
root@adminbuch:~# samba-tool group listmembers administrators
Administrator
Enterprise Admins
Domain Admins
Listing 15.22 Auflisten der Gruppenmitglieder
Beim Auflisten der Gruppe administrators sehen Sie, dass die Gruppe Domain Admins Mitglied der Gruppe ist. Samba 4 kann mit den verschachtelten Gruppen umgehen.
Auch Sie können später bei der Administration Gruppen verschachteln. Anders als bei Samba 3 müssen Sie die Möglichkeit der verschachtelten Gruppen nicht mehr in der Datei smb.conf aktivieren.
Anlegen einer neuen Gruppe mit »group add <groupname>«
Eine neue Gruppe können Sie mit dem Kommando samba-tool group add <groupname> zu Ihrer Gruppenliste hinzufügen. Listing 15.23 zeigt das Anlegen einer neuen Gruppe:
root@adminbuch:~# samba-tool group add datengruppe
Added group datengruppe
Listing 15.23 Anlegen einer neuen Gruppe
Die gerade angelegte Gruppe ist eine reine Windows-Gruppe. Sie können die Gruppe mit dem Kommando wbinfo -g sehen, aber im Moment noch nicht mit getent group. In Listing 15.24 sehen Sie die Liste der Gruppen:
root@adminbuch:~# wbinfo -g
EXAMPLE\cert publishers
EXAMPLE\ras and ias servers
EXAMPLE\allowed rodc password replication group
EXAMPLE\denied rodc password replication group
EXAMPLE\dnsadmins
EXAMPLE\enterprise read-only domain controllers
EXAMPLE\domain admins
EXAMPLE\domain users
EXAMPLE\domain guests
EXAMPLE\domain computers
EXAMPLE\domain controllers
EXAMPLE\schema admins
EXAMPLE\enterprise admins
EXAMPLE\group policy creator owners
EXAMPLE\read-only domain controllers
EXAMPLE\dnsupdateproxy
EXAMPLE\datengruppe
Listing 15.24 Liste der Gruppen
Auch können Sie mit chgrp <neue Gruppe> <Eintrag> keine Berechtigungen setzen. Das Setzen der Rechte wäre im Moment nur über die GID möglich, da die Namen noch nicht aufgelöst werden können. Für die Verwendung der Gruppe unter Linux müssen Sie das ID-Mapping aktivieren.
Hier müssen Sie zwischen dem ID-Mapping auf einem Domaincontroller und dem ID-Mapping auf einem Fileserver oder einem Linux-Client unterscheiden. Auf dem Domaincontroller übernimmt Samba 4 selbst das ID-Mapping und weist den Windows-Benutzern und -Gruppen eigene IDs zu.
Auf einem Fileserver oder einem Linux-Client übernimmt der winbind diese Aufgabe. Mehr zu dieser Problematik erfahren Sie in Abschnitt 15.8, »Linux-Client in der Domäne«, und Abschnitt 15.9, »Zusätzliche Server in der Domäne«.
Um die Gruppen auch im Linux-System sehen und nutzen zu können, muss die Datei /etc/nsswitch.conf so wie in Listing 15.25 angepasst werden:
passwd compat systemd winbind
group compat systemd winbind
Listing 15.25 Anpassen der Datei »nsswitch.conf«
[+] Änderung bei Ubuntu 18.04
Ab der Ubuntu-Version 18.04 wird zusätzlich zu dem Parameter compat der Parameter systemd verwendet. Diesen Parameter dürfen Sie nicht löschen, da sonst bestimmte Systemdienste nicht mehr richtig funktionieren. Fügen Sie diesen Parameter aber bei keiner anderen Distribution hinzu.
Nach der Anpassung der Datei /etc/nsswitch.conf können Sie jetzt mit dem Kommando getent group nicht alle Gruppen sehen, denn die automatische Auflistung aller Benutzer aus dem Active Directory ist in der Konfiguration immer abgeschaltet. Das sollten Sie auch nicht ändern, da eine Auflösung der IDs aller Benutzer und Gruppen einen Domaincontroller sehr stark belastet. Sie können aber mit getent passwd <ad-user> oder getent group <ad-group> immer die Informationen der Benutzer und Gruppen aus dem Active Directory abfragen. Die Vergabe der Rechte an die Benutzer und Gruppen über die Kommandozeile funktioniert auch.
[+] Wenn Sie später auf dem Domaincontroller keine Daten speichern oder keine Verwaltung der Rechte über die Kommandozeile vornehmen wollen, brauchen Sie die Datei /etc/nsswitch.conf nicht anzupassen. Sie sollten, wenn immer möglich, den Domaincontroller nie zum Speichern von Daten verwenden. Für die Speicherung von Daten sollten Sie immer einen Fileserver aufsetzen. Nicht nur aus Sicherheitsgründen: Auch das ID-Mapping ist auf jedem Domaincontroller immer unterschiedlich, und somit können Linux-Benutzer eventuell unterschiedliche UIDs auf dem Domaincontroller haben.
Das Auflisten der Gruppen und Benutzer mit dem Kommando getent ist auf einem Domaincontroller nicht so ohne Weiteres möglich. Sie können nicht alle Benutzer auf einmal auflisten lassen. Wenn Sie die Informationen auf einem Domaincontroller benötigen, müssen Sie jeden Benutzer und jede Gruppe einzeln, so wie in Listing 15.26, anzeigen lassen:
root@adminbuch:~# getent group EXAMPLE\\datengruppe
EXAMPLE\datengruppe:x:3000017:
Listing 15.26 Auflisten der Gruppen mit »getent group«
Hinzufügen eines oder mehrerer Benutzer zu einer bestehenden Gruppe
Über das Kommando samba-tool group addmembers <groupname> <members> können Sie mehrere Benutzer gleichzeitig zu einer Gruppe hinzufügen. Listing 15.27 zeigt dieses Vorgehen:
root@adminbuch:~# samba-tool group addmembers datengruppe "Domain Users"
Added members to group datengruppe
root@adminbuch:~# samba-tool group listmembers datengruppe
Domain Users
Listing 15.27 Gruppenmitglieder hinzufügen
Da Sie Gruppen verschachteln können, können Sie auch eine oder mehrere der Standardgruppen zu Ihrer Gruppe hinzufügen.
Achten Sie darauf, dass einige der Gruppen ein Leerzeichen im Namen haben. Dann müssen Sie den Gruppennamen beim Hinzufügen in Hochkommata setzen.
[+] Sie können mit dem Kommando samba-tool group addmembers <groupname> <members> keine lokalen Gruppen des Systems zu den AD-Gruppen hinzufügen, da diese Gruppen nur auf dem System vorhanden sind und nicht im AD.
[ ! ] Keine Verwendung von lokalen Gruppennamen
Verwenden Sie für neue Gruppen keine Namen, die in der lokalen Gruppenverwaltung über die Datei /etc/group Verwendung finden. Die lokalen Gruppen haben immer Priorität vor den Gruppen aus dem AD. Wenn Sie jetzt also eine Gruppe im AD anlegen, die denselben Namen hat wie eine lokale Gruppe, wird das System bei der Rechtevergabe immer die lokale Gruppe verwenden.
Entfernen eines oder mehrerer Benutzer aus einer Gruppe
Wenn Sie einen oder mehrere Benutzer aus einer Gruppe entfernen möchten, geht das mit dem Kommando samba-tool group removemembers <groupname> <members>. In Listing 15.28 sehen Sie ein Beispiel:
root@adminbuch:~# samba-tool group removemembers datengruppe "Domain Users"
Removed members from group datengruppe
Listing 15.28 Entfernen von Mitgliedern
Sie können hier auch mehrere Mitglieder, durch Leerzeichen getrennt, aus der Gruppe entfernen.
15.5.2 Verwaltung von Benutzern über die Kommandozeile
Für die Verwaltung der Benutzer verwenden Sie das Kommando samba-tool user. Genau wie bei der Verwaltung der Gruppen gibt es auch hier wieder Subkommandos für die verschiedenen Aufgaben. Auch hier werden alle Subkommandos näher erläutert, sodass Sie die Beispiele gleich testen können.
Auflisten der Benutzer
Alle Benutzer können Sie sich mit dem Kommando samba-tool user list anzeigen lassen. In Listing 15.29 sehen Sie eine Liste aller Benutzer nach der Installation des Systems:
root@adminbuch:~# samba-tool user list
Administrator
krbtgt
Guest
Listing 15.29 Auflistung aller Benutzer
Wie schon zuvor bei den Gruppen sehen Sie hier alle Benutzer, die während der Installation angelegt werden. Auch hier gilt: Löschen Sie keinen der Benutzer!
Anlegen eines Benutzers
Um einen neuen Benutzer über die Kommandozeile anzulegen, verwenden Sie das Kommando samba-tool user create username <password>. Achten Sie bei dem Passwort auf die Komplexitätsregel.
In Listing 15.30 sehen Sie ein Beispiel mit einem Passwort, das diesen Regeln nicht entspricht:
root@adminbuch:~# samba-tool user create Stefan geheim --given-name=Stefan\
--surname=Kania
ERROR(ldb): Failed to add user 'Stefan': - 0000052D: \
Constraint violation - check_password_restrictions: the \
password is too short. It should be equal or longer than 7 characters!
Listing 15.30 Passwort, das nicht den Komplexitätsregeln entspricht
[+] Komplexitätsregeln bei Passwörtern
Für die Komplexitätsregeln gilt: Es müssen mindestens Groß- und Kleinbuchstaben sowie Zahlen verwendet werden oder aber zumindest ein Sonderzeichen. Sie müssen also immer drei verschiedene Zeichengruppen beim Passwort verwenden, und die Mindestlänge eines Passworts ist sieben Zeichen.
Alle Benutzer, die Sie über die Kommandozeile anlegen, werden immer in der Organisationseinheit cn=Users,DC=example,DC=net erzeugt. Wenn Sie später eine komplexe AD-Struktur haben, müssen Sie die neuen Benutzer auf jeden Fall immer verschieben.
In Listing 15.31 sehen Sie das erfolgreiche Anlegen eines neuen Benutzers:
root@adminbuch:~# samba-tool user create Stefan geheim\!123\
--given-name=Stefan --surname=Kania
User 'Stefan' created successfully
root@adminbuch:~# samba-tool user list
Administrator
Stefan
krbtgt
Guest
Listing 15.31 Erfolgreiches Anlegen eines Benutzers
Wie Sie in dem Beispiel sehen, können Sie beim Anlegen des Benutzers gleich weitere Parameter mit angeben. In diesem Beispiel sind es der Vor- und der Nachname. Alle Werte, die im AD verwendet werden, können hier mit übergeben werden. Da es sich dabei um eine größere Anzahl von Parametern handelt, kann an dieser Stelle nicht darauf eingegangen werden. Bei der Benutzerverwaltung mit grafischen Werkzeugen werden Sie alle Parameter sehen und anpassen können. In Listing 15.32 sehen Sie, wie Sie einen Benutzer ohne weitere Parameter anlegen können:
root@adminbuch:~# samba-tool user create ktom
New Password:
Retype Password:
User 'ktom' created successfully
Listing 15.32 Ein weiterer Benutzer
Da dieses Mal kein Passwort beim Anlegen des Benutzers mitgegeben wurde, wird jetzt nach dem Passwort für den Benutzer gefragt. Das Heimatverzeichnis des Benutzers wird nicht mit angelegt. Sie müssen es selbst auf dem entsprechenden Server anlegen und mit Rechten versehen. Nach dem Anlegen des Benutzers können Sie sich den Benutzer wieder mit samba-tool user list auflisten lassen. Auch die Benutzer sehen Sie wieder mit wbinfo -u. Wie schon bei den Gruppen werden die neuen Benutzer mit getent passwd nur angezeigt, wenn Sie die Datei /etc/nsswitch.conf angepasst haben. In Listing 15.33 sehen Sie sowohl das Ergebnis von wbinfo -u als auch das Ergebnis von getent passwd <username>:
root@adminbuch:~# wbinfo -u
EXAMPLE\administrator
EXAMPLE\stefan
EXAMPLE\krbtgt
EXAMPLE\guest
EXAMPLE\ktom
root@adminbuch:~# getent passwd EXAMPLE\\stefan
EXAMPLE\stefan:*:3000018:100:Stefan Kania:/home/EXAMPLE/stefan:/bin/false
Listing 15.33 Auflisten der Benutzer
[+] Nicht mehr zeitgemäß
In manchen Anleitungen finden Sie noch das Kommando samba-tool user add <username> <password>. Dieses Kommando ist nur noch aus Kompatibilitätsgründen vorhanden und sollte nicht mehr verwendet werden. Lesen Sie dazu auch die Manpage zum Kommando samba-tool.
Deaktivieren eines Benutzers
Wenn Sie einen bestehenden Benutzer nur deaktivieren wollen, weil der Benutzer sich zurzeit nicht anmelden darf oder soll, können Sie den Benutzer einfach deaktivieren und müssen ihn nicht gleich löschen. In Listing 15.34 sehen Sie ein Beispiel für das Deaktivieren eines Benutzers:
root@adminbuch:~# samba-tool user disable stefan
Listing 15.34 Deaktivieren eines Benutzers
Leider erhalten Sie bei samba-tool user disable <username> keine Meldung. Ob das so gewollt ist oder ob das ein Bug ist, wird sich noch herausstellen.
Aktivieren eines deaktivierten Benutzers
Um einen zuvor deaktivierten Benutzer wieder zu aktivieren, verwenden Sie das Kommando samba-tool user enable <username> so, wie Sie es in Listing 15.35 sehen können. Anders als beim Befehle disable bekommen Sie eine Meldung, dass der Benutzer wieder aktiviert wurde.
root@adminbuch:~# samba-tool user enable Stefan
Enabled user 'Stefan'
Listing 15.35 Aktivieren eines Benutzers
Das Passwort eines Benutzers ändern
Für den Fall, dass ein Benutzer sein Passwort vergessen hat, oder wenn Sie einem Benutzer aus einem anderen Grund ein neues Passwort zuweisen wollen, verwenden Sie das Kommando samba-tool user setpassword <username>. In Listing 15.36 sehen Sie ein Beispiel dafür:
root@adminbuch:~# samba-tool user setpassword Stefan
New Password:
Changed password OK
Listing 15.36 Das Passworts eines Benutzers setzen
Beim Setzen eines neuen Passworts müssen Sie wieder auf die Komplexitätsregeln achten. Das neue Passwort wird nur einmal eingegeben. Achten Sie also darauf, was Sie eingeben. Sonst müssen Sie den Vorgang wiederholen.
Ändern des persönlichen Passworts durch den Benutzer
Natürlich kann ein Benutzer sein Passwort auch selbst über die Kommandozeile verändern. Dafür gibt es das Kommando samba-tool user password. In Listing 15.37 sehen Sie diesen Vorgang:
EXAMPLE\stefan@adminbuch:~# samba-tool user password
Password for [EXAMPLE\stefan]:
New Password:
Retype Password:
Changed password OK
Listing 15.37 Änderung des Passworts durch den Benutzer
Löschen eines Benutzers
Wenn Sie einen Benutzer aus dem System entfernen wollen, nutzen Sie dafür das Kommando user delete <username>:
root@adminbuch:~# samba-tool user delete stefan
Deleted user stefan
Listing 15.38 Löschen eines Benutzers
Denken Sie daran, dass ein eventuelles Heimatverzeichnis des Benutzers nicht automatisch gelöscht wird.
15.5.3 Setzen der Passwortrichtlinien
Seit der Samba-Version 4.2 können Sie mit dem Kommando samba-tool auch Passwortrichtlinien für die Domäne setzen. Als Erstes sollten Sie sich die aktuellen Richtlinien auflisten lassen:
root@adminbuch:~# samba-tool domain passwordsettings show
Password informations for domain 'DC=example,DC=net'
Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30
Listing 15.39 Auflisten der Passwortrichtlinien
Wenn Sie einzelne Einstellungen ändern möchten, können Sie sich mit dem Kommando samba-tool domain passwordsettings set --help die Hilfe anzeigen lassen, um die Parameter für die einzelnen Optionen bestimmen zu können. Anschließend können Sie die Werte so wie in Listing 15.40 anpassen:
root@adminbuch:~# samba-tool domain passwordsettings set --min-pwd-age=2
Minimum password age changed!
All changes applied successfully!
root@adminbuch:~# samba-tool domain passwordsettings set --max-pwd-age=90
Maximum password age changed!
All changes applied successfully!
root@adminbuch:~# samba-tool domain passwordsettings show
Password informations for domain 'DC=example,DC=net'
Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 2
Maximum password age (days): 90
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30
Listing 15.40 Ändern der Passwortparameter
Alle Einstellungen sind, wie auch in einer Microsoft-Domäne, für alle Benutzer der Domäne bindend. Bis einschließlich der Version 4.7 ist das die einzige Möglichkeit die Passwortrichtlinien einer Domäne anzupassen. Erst mit der Version 4.8 ist eine Übersteuerung der globalen Einstellungen durch eine Gruppenrichtlinie möglich. Da noch keine Distribution dieses Version unterstützt, werden wir an dieser Stelle auch nicht darauf eingehen.