staging.inyokaproject.org

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:


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.

Diese Revision wurde am 1. November 2022 11:38 von Bournless erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Client-Join, Howto, AD-Benutzerkonten, Server, Samba-AD, Samba, GPO, Gruppenrichtlinie, pam-mount, PAM, ADsys