Samba-AD Tipps
Hinweis:
Dieses Howto wurde von Bournless erstellt. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich gegebenenfalls zusätzlich an den/die Verfasser des Howtos.
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Ziel¶
Dieses Howto beschreibt einige zusätzliche Hinweise, Ergänzungen und Tipps, wenn man zuvor einen Domaincontroller (DC), gemäß dem Howto Samba-AD-Server_unter_Ubuntu_20.04_installieren erfolgreich installiert hat und wendet sich primär an weniger erfahrene, aber dennoch interessierte User, die auch stationäre Ubuntu PCs (ab der Desktop-Version 20.04) in die Domäne aufnehmen möchten.
Die Ubuntu-Serverversionen werden in diesem Howto nicht berücksichtigt, da sie auf unterschiedliche Vorgehensweisen an die Domäne gebunden werden können!
Hinweis:
Zum leichteren Verständins werden alle Vorgaben (Bezeichnungen, Realm und IP-Adressen) aus dem oben genannten Howto benutzt.
AD-Benutzerkonten (Samba-Tool)¶
Nach Abschluss der Installation des neuen Domaincontrollers (adc01) existiert im Active Directory nur ein aktiviertes Benutzerkonto - das Konto vom Administrator. Um nun Standard-Benutzerkonten im AD anzulegen, benutzt man in der Regel die Remoteserver-Verwaltungstools (RSAT), die aber einen Windows PC in der Domäne voraussetzen. Wer diesen aber nicht bereitstellen kann oder möchte, kann als Alternative die samba-tools nutzen, die bereits auf dem Domaincontroller vorhanden sind.
Eine ausführliche Beschreibung findet man in der entsprechenden Manpage:
sudo samba-tool -h
AD-Benutzerkonto erstellen¶
sudo samba-tool user create peterp Hugo#0815 --given-name=Peter --surname=Pan
erstellt ein AD-Benutzerkonto für Peter Pan mit dem Benutzeranmeldename (loginname) peterp und dem Passwort Hugo#0815 im Container Users.
AD-Benutzerkonten anzeigen¶
sudo samba-tool user list
zeigt eine kurze Übersicht aller AD-Benutzerkonten an.
AD-Benutzerkonten-Details¶
sudo samba-tool user show peterp
zeigt alle Details zum AD-Benutzerkonto von Peter Pan an.
Gateway und DNS¶
Die diesbezüglichen notwendigen Einstellungen auf den Clients werden in diesem Howto manuell erfolgen, da
auf dem DC (adc01) gewollt kein DHCP-Server installiert wurde.
die meisten DHCP-Server auf den s.g. SOHO-Routern (z.B. Fritz!Box) nur eine IP-Adresse für lokale DNS-Server vergeben können.
Ubuntu (neuer PC)¶
Ein neu zu installierender stationärer kabelgebundener PC (Ubuntu-Desktop ab der Version 20.04.4) wird zunächst per "Ubuntu ausprobieren" gestartet, um im NetworkManager im TAB IPv4 manuell eine gewünschte IP (10.10.20.x), die Subnetzmaske (24) und die IP des Gateways (10.10.20.1) eintragen zu können. Um den DC (adc01) als primären lokalen DNS-Server einzutragen wird im Abschnitt DNS der Schalter "Automatisch" auf deaktiviert gestellt und im darunter liegenden Feld die IP des DCs (10.10.20.220) zuerst genannt. Damit der Client auch bei einem Ausfall oder Nichterreichbarkeit des DCs weiterhin mit dem Internet kommunizieren kann, kann hier zusätzlich die IP des Gateway (10.10.20.1) eingetragen werden, da er über eine DNS-Forwarder-Adresse (einen öffentlichen DNS-Server) verfügt.
Beispiel:
10.10.20.220,10.10.20.1
Jetzt ist sichergestellt, dass der neue Client-PC den DNS-Server des AD-DC zuerst benutzt und gleichzeitig über eine funktionsfähige Internetverbindung verfügt.
Ubuntu (vorhandener PC)¶
Zuerst muss dafür gesorgt werden, dass auf dem vorhandenen stationären PC die bereits schon installierte Ubuntu-Desktop Version 20.04.x der Version 20.04.4 entspricht. Dazu wird der Befehl
sudo apt update && sudo apt upgrade
ausgeführt.
Nun wird die IP des Client-PC im NetworkManager im TAB IPv4 (10.10.20.x) manuell vergeben, die Subnetzmaske (24) und die IP des Gatways (10.10.20.1) eingetragen. Um den DC (adc01) als primären lokalen DNS-Server einzutragen wird im Abschnitt DNS der Schalter "Automatisch" auf deaktiviert gestellt und im darunter liegenden Feld die IP des DCs (10.10.20.220) zuerst genannt. Damit der Client auch bei einem Ausfall oder Nichterreichbarkeit des DCs weiterhin mit dem Internet kommunizieren kann, kann hier zusätzlich die IP des Gateway (10.10.20.1) eingetragen werden, da er über eine DNS-Forwarder-Adresse (einen öffentlichen DNS-Server) verfügt.
Beispiel:
10.10.20.220,10.10.20.1
Mobile Geräte¶
Hinweis:
Eine Konfiguration für mobile Geräte (z.B. Notebooks oder Subnetbooks), die auch mal das heimische LAN verlassen ist zwar möglich, sprengen aber den Umfang dieses Howtos.
Zeitserver¶
Eine gesonderte Konfiguration ist auf den stationären Ubuntu-Desktop Clients nicht zwingend notwendig, da diese nun stets einen öffentlichen Zeitserver erreichen können. Allerdings ist es auch möglich, den Zeitserver des lokalen Domaincontrollers als primären Zeitserver zu hinterlegen, was unkomliziert per per timesyncd möglich ist.
GptTmpl.inf¶
Ohne die bisher fehlende Datei GptTmpl.inf kann ein neu zu installierender Ubuntu-Desktop PC ab der Version 20.04.x zwar schon während des Installationsvorgangs der Domäne beitreten, jedoch wird jeglicher Versuch, sich anschließend mit einem AD-Benutzerkonto anzumelden, nach Eingabe des (korrekten) Passwortes mit einer Fehlermeldung abgelehnt. Grund: Die bisherigen Versionen von SSSD (bis zur Version 2.7+) erwarten u.A. die Existenz der Datei GptTmpl.inf
GptTmpl.inf erstellen¶
Zur Erstellung der fehlenden .inf Datei meldet man sich auf dem DC (adc01) als Systemverwalter an, um anschließend folgende Befehle auszuführen:
sudo -i cd /var/lib/samba/sysvol/*/Policies/{31*/MACHINE mkdir -p Microsoft/"Windows NT"/SecEdit cd Microsoft/Windows\ NT/SecEdit nano GptTmpl.inf
Die nun neu erstellte Datei bekommt folgenden Inhalt:
[Unicode] Unicode=yes [Version] signature="$CHICAGO$" Revision=1
Diese Datei abschließend speichern und schließen.
Mit dem Befehl
exit
sollte der "Superuser-Modus" nun wieder verlassen werden.
AD-Join (neuer PC)¶
Nachdem die Datei GptTmpl.if erfolgreich erstellt wurde, kann ein neu zu installierender Ubuntu-Desktop PC (ab der Version 20.04.4) schon während des Installationsvorgangs im AD registriert werden, um nach dem Abschluss der Installation sofort die bereits vorhandenen AD-Benutzerkonten zur Anmeldung nutzen zu können. Dazu aktiviert man während des Installationsvorgang den Punkt "Use Active Directory" und trägt bei "Domain" den Namen der Domäne (heim.lan), bei "Domain Administrator" Administrator und bei "Kennwort" das im Howto bereits vergebene Password ein. (ACHTUNG: Hier ist nicht das Passwort vom Systemverwalter gemeint!)
AD-Join (vorhandener PC)¶
Um Vergleichbares auf einem bereits vorhandenen PC (Ubuntu-Desktop ab Version 20.04.4) zu erreichen, sind folgende Befehle notwendig:
sudo apt update && sudo apt upgrade sudo apt install sssd-ad sssd-tools realmd adcli sudo pam-auth-update --enable mkhomedir sudo realm join heim.lan
Damit ist der PC der Domäne (heim.lan) beigetreten und man kann sich mit den vorhandenen AD-Benutzerkonten an der Domäne anmelden.
Ausnahme¶
Bei Ubuntu-Desktop Versionen, welche nicht von Beginn an nicht mindestens eine Version 20.04.4 waren, bedarf es leider etwas Nacharbeit an der Datei sssd.conf, da sonst die Anmeldung von AD-Benutzerkonten nicht ordnungsgemäß funktioniert - weder im Terminal noch im Anmeldebildschirm.
Hinweis:
Eine bereits vorkonfigurierte Datei sssd.conf wird erst erzeugt, wenn der Join-Befehl erfolgreich ausgeführt wurde.
sudoedit /etc/sssd/sssd.conf
Im Abschnitt [domain/heim.lan] als letzte Zeile den Eintrag
ad_gpo_access_control = permissive
hinzufügen. Diese Datei abschließend speichern und schließen.
Nun werden noch noch die Befehle
sudo sss_cache -UG sudo systemctl restart sssd
ausgeführt und der bisherige Benutzer (Systemverwalter) ausgeloggt. Alternativ kann man den PC auch einfach rebooten lassen.
AD-Login¶
Login im Terminal¶
Hinweis:
Im Gegensatz zum Anmelden im Anmeldebilschirm (Login Screen) ist das Anmelden mit einem AD-Benutzerkonto in einem Terminal nur möglich, wenn der aktuell am System angemeldete Benutzer Befehle mit root-Rechten ausführen kann und wird danach nicht im Anmeldebildschirm gelistet!
Im folgenden Beispiel ist der Benutzer ich ein Systemveralter auf u2004-13
ich@u2004-13:~/Schreibtisch$ sudo login [sudo] Passwort für ich:
Zunächst wird wie gewohnt das Passwort des Systemverwalters abgefragt. Nach der erfolgreichen Anmeldung einscheint nun ein neuer Login-Prompt.
u2004-13 Login: peterp@heim.lan Passwort:
Erst hier wird das AD-Benutzerkonto in UPN-Schreibweise und dessen Passwort eingegeben.
Login im Anmeldebildschirm¶
Im Anmeldebildschirm (Login Screen) auf "Nicht aufgeführt?" klicken und mit einem AD-Konto in UPN-Schreibweise anmelden.
Beispiel:
Benutzer: peterp@heim.lan Passwort: Hugo#0815
Info: Weitere, bereits vorhandene AD-Benutzerkonten können alternativ auch in der GUI unter Einstellungen->Benutzerkonto mit dem Button Anmeldung in Unternehmensumgebung eingerichtet werden, die anschließend im Login Screen gelistet werden. Allerdings werden deren Homezeichnisse erst bei der ersten erfolgreichen Anmeldung am AD erstellt.
Tipp Anmeldebildschirm¶
Der Anmeldebildschirm zeigt standardmäßig alle vorhandenen lokalen Benutzer an. Dazu gehören auch alle auf dem System eingerichten AD-Benutzerkonten , was sehr schnell unübersichtlich werden kann.
Dieses Verhalten kann wie folgt geändert werden:
sudoedit /etc/gdm3/greeter.dconf-defaults
Nun entfernt man das Hash-Zeichen (#) bei den folgenden Zeilen:
# [org.gnome/login-screen] # disable-user-list=true
Die Datei speichern und schließen.
Ab jetzt werden im Anmeldebildschirm keine Benutzerkonten mehr angezeigt.
Freigaben mounten (PAM-Mount)¶
Sehr oft wird für jeden AD-Benutzer ein persönlicher Basisordner (aka Heimatverzeichnis oder Home folder) in einer entsprechenden Freigabe auf einem separaten Fileserver erstellt, damit ihm nach einem Wechsel des stationären Arbeitsplatz-PCs auch dort automatisch seine persönlichen Dateien zur Verfügung gestellt werden können.
Wechsel = Windows-Client < – > Ubuntu-Client | Windows-Client < – > Windows-Client | Ubuntu-Client < – > Ubuntu-Client
Das Bereitstellen der persönlichen Dateien auf den jeweiligen Arbeitsplatz-PCs (Windows oder Ubuntu) erfolgt dabei meist auf zwei Arten:
1. als separates Laufwerk (ohne direkten Bezug auf die schon vorhandenen lokalen Ordner).
2. mittles Ordnerumleitung (mit direktem Bezug) auf die schon vorhandenen lokalen Ordner ( z. B. Dokumente, Bilder, usw.).
In den folgenden Abschnitten wird davon ausgegangen, dass bereits ein separater Fileserver mit folgenden Eckdaten existiert:
Hostname: | fs01 | FQDN: | fs01.heim.lan |
Verzeichnis für alle Basisordner: | basisordner | Freigabename: | basis |
Basisordner von Peter Pan: | basis/peterp | Speicherort seiner Dokumente: | basis/peterp/Documents |
Hinweis:
1. Bitte niemals solche Freigaben auf Domaincontrollern einrichten!
2. Soll den AD-Benutzern ein individuell begrenzbarer Speicherplatz für ihre Basisordner zur Verfügung gestellt werden, muss vorab Quota auf dem (Ubuntu-) Fileserver eingerichtet werden!
Winbind oder pbisopen¶
Für Linux-Desktop-Clients die Winbind oder pbisopen nutzen, gibt es im I-Net schon ausreichend viele Anleitungen zu diesem Thema und finden deshalb hier keine weitere Beachtung.
SSSD¶
Bei Linux-Desktop-Clients, die SSSD nutzen, muss zunächst die zuständige Konfigurationsdatei auf dem Client-PC angepasst werden, da SSSD die notwendigen Variablen %(USER), %(DOMAIN_USER) und %(DOMAIN_NAME) mit den vorgegebenen Einstellungen abweichend interpretiert.
sudoedit /etc/sssd/sssd.conf
Der Eintrag
use_fully_qualified_names = True
muss in
use_fully_qualified_names = False
geändert werden.
PAM-Mount installieren und konfigurieren¶
Mit dem Befehl
sudo apt install libpam-mount cifs-utils
erfolgt die Installation der notwendigen Pakete.
Tipp: Nach der Installation aber vor dem ersten Bearbeiten der Datei /etc/security/pam_mount.conf.xml sollte eine Sicherung der Datei anlegt werden:
sudo cp /etc/security/pam_mount.conf.xml /etc/security/pam_mount.conf.xml.org
Nun wird die Konfigurationsdatei von pam-mount angepasst.
sudoedit /etc/security/pam_mount.conf.xml
Zwischen den Zeilen
<!-- Volume definitions -->
und
<!-- pam_mount parameters: General tunables -->
werden folgende Zeilen eingefügt:
<volume fstype="cifs" server="fs01.heim.lan" path="basis/%(DOMAIN_USER)" mountpoint="~/%(USER)" options="sec=krb5,cruid=%(USERUID),workgroup=HEIM,vers=3.0" />
Info:
1. Auch ein bereits vorhandener Ordner unter $HOME kann als Mountpoint dienen, sollte aber noch keine Dateien enthalten!
2. Das Erstellen des Mountpoints, das Mounten und Unmounten des separaten Laufwerks erledigt pam-mount nun automatisch!
3. Die Automatik funktioniert nur, wenn der Mountpoint in einem lokalen Ordner liegt auf den der AD-Benutzer Vollzugriff hat (z. B. ~ oder /tmp).
Nach einem abschließenden Neustart und Anmeldung mit einem AD-Benutzerkonto steht ihm nun sein persönlicher Basisordner (inkl. allen dort vorab eingerichteten Unterordner) als separates Laufwerk zur Verfügung.
Ordnerumleitung¶
Die Nutzung der Basisordner kann durch eine automatische Ordnerumleitung optimiert werden. Eine entsprechende GPO (Gruppenrichtlinie) gibt es für Ubuntu-Clients bis dato (September 2022) aber leider noch nicht. Daher zeigt das folgende Beispiel eine gleichwertige Alternative anhand des Ordners Dokumente:
<volume fstype="cifs" server="fs01.heim.lan" path="basis/%(DOMAIN_USER)/Documents" mountpoint="~/Dokumente" options="sec=krb5,cruid=%(USERUID),workgroup=HEIM,vers=3.0,x-gvfs-hide" />
Erklärung: In diesem Beispiel wird der Ordner Documents aus dem Basisordner des AD-Benutzers direkt in den lokalen Ordner Dokumente gemountet. Die zusätzliche Angabe von x-gvfs-hide in den Opitionen sorgt dafür, dass es kein separates Laufwerk gibt, welches versehentlich oder böswillig vom AD-Benutzer ausgeworfen werden kann.
Um auch andere Ordner aus dem Basisordner des AD-Benutzers direkt in den korrespondierenden lokalen Ordner zu mounten, wird für jeden gewünschten Ordner jeweils ein zusätzlicher Eintrag gemäß dem genannten Muster erstellt.
in Ubuntu | in der Freigabe | | | in Ubuntu | in der Freigabe | | | in Ubuntu | in der Freigabe | | | in Ubuntu | in der Freigabe |
Dokumente | Documents | | | Schreibtisch | Desktop | | | Bilder | Pictures | | | Öffentlich | Public |
Musik | Music | | | Videos | Videos | | | Downloads | Downloads | | | Vorlagen | Templates |
Tipp: Um eine Konsistenz/Kompatibilität mit Windows-Clients zu erreichen, muss in der Freigabe immer die englische Bezeichnung der jeweiligen Ordner benutzt werden!
Nach der Ordnerumleitung stehen einem AD-Benutzer nun auf allen Client-PCs, einheitlich im richtigen Ordner, seine persönlichen Dateien zur Bearbeitung zur Verfügung.
Unerwünschte Dateien ausblenden¶
Optional kann man noch zwei "Schönheitsfehler" beseitigen.
Windows-Clients¶
erstellen in jedem Ordner stets den Ordner $RECYCLE.BIN und die Datei desktop.ini. Beide sind in den Windows-Clients nicht sichtbar, bei den Ubuntu-Clients hingegen schon. Um diesen Umstand entgegenzuwirken, bedarf es der Erstellung eines Skripts, welches für alle Benutzer (lokale Benutzer und AD-Benutzer auf dem Ubuntu-Client) gilt, und der Erstellung einer systemweit gültigen .desktop Datei, damit das Skript nach einer erfolgreichen Anmeldung am System automatisch ausgeführt wird.
Skript erstellen:
sudoedit /usr/local/bin/hidden.sh
Das Skript bekommt folgenden Inhalt:
#!/bin/sh if [ "${HOME}" != "${HOME#*@}" ]; then echo desktop.ini > $HOME/Dokumente/.hidden echo '$RECYCLE.BIN' >> $HOME/Dokumente/.hidden else exit fi
und wird mit dem Befehl
sudo chmod +x /usr/local/bin/hidden.sh
als ausführbar gekennzeichnet.
Info:
1. Stellt das Skript fest, dass der aktuelle Benutzer mit einem AD-Benutzerkonto angemeldet ist, erstellt es die Datei .hidden.
2. Der Inhalt der Datei .hidden sorgt dafür, dass die Anzeige von $RECYCLE.BIN und desktop.ini im Ordner Dokumente im Dateiexplorer (z. B. Nautilus) unterdrückt wird. Um das gleiche Verhalten auch für andere Ordner (Bilder, Downloads, usw.) zu erreichen, muss das Skript nur um die entsprechenden echo Befehle ergänzt werden.
Damit das Skript nach der Anmeldung eines beliebigen Benutzers automatisch ausgeführt wird, wird eine entsprechende .desktop Datei erstellt.
sudoedit /etc/xdg/autostart/hidden.desktop
Diese Datei bekommt folgenden Inhalt:
[Desktop Entry] Type=Application Name=hidden-Datei platzieren Exec=/usr/local/bin/hidden.sh
Ubuntu-Clients¶
hingegen erstellen in den jeweilgen Ordnern einen .Trash-xxxxx Ordner, wenn eine Datei oder ein Verzeichnis gelöscht wurde. Dieser ist bei den Ubuntu-Clients nicht sichtbar aber bei den Wndows-Clients. Um dort die Anzeige zu unterdrücken kann für die Windows-Clients z. B. ein entsprechendes Anmeldeskript per Gruppenrichtlinie erstellt werden.
servergespeicherte Profile¶
Das Erstellen von servergespeicherten Profilen ist zwar möglich, sprengt aber den Rahmen dieses Howto, da es insbesondere in heterogenen Systemumgebungen (AD mit Ubuntu- und Windows-Client-PCs) sehr aufwendig ist.
Gruppenrichtlinien mit ADsys¶
Canonical/Ubuntu bietet ab den Versionen 22.04 per ADsys einige ADMX- und ADML-Dateien für DCs an. Allerdings sind die enthaltenen GPOs rudimentär und beschränken sich bisher (Stand: September 2022) auf die Möglichkeiten, die mit den gesettings bzw. dem dconf-editor eh schon möglich sind. Zudem sind die interessanteren Möglichkeiten (An- und Abmeldeskripts) nur als Mitglied des kostenplichtigen Ubuntu Advantage-Abonnement sinnvoll nutzbar.
Hinweis (PowerShell AD Module)¶
Als gute und kostenfreie Möglichkeit ein Active Directory unter Ubuntu zu administrieren bietet sich das Snap-Paket PowerShell an.
Links¶