## Bitte den / die Autoren eintragen, der / die das Howto erstellt und durchgetestet habe: [[Vorlage(Howto, Bournless)]] ## Howtos bekommen eine getestet-Box wie Wikiartikel auch: [[Vorlage(getestet, focal, jammy)]] [[Inhaltsverzeichnis(2)]] =Ziel= Dieses Howto beschreibt einige zusätzliche Hinweise, Ergänzungen und Tipps, wenn man zuvor einen Domaincontroller (DC), gemäß dem Howto [https://wiki.ubuntuusers.de/HowTo/Samba-AD-Server_unter_Ubuntu_20.04_installieren/ 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! {{{#!vorlage 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: {{{#!vorlage Befehl sudo samba-tool -h}}} ==AD-Benutzerkonto erstellen== {{{#!vorlage Befehl 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== {{{#!vorlage Befehl sudo samba-tool user list}}}zeigt eine kurze Übersicht aller AD-Benutzerkonten an. ==AD-Benutzerkonten-Details== {{{#!vorlage Befehl 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 {{{#!vorlage 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== {{{#!vorlage 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 [https://wiki.ubuntuusers.de/systemd/timesyncd/#Konfiguration 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: {{{#!vorlage Befehl 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 {{{#!vorlage 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: {{{#!vorlage Befehl 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. {{{#!vorlage Hinweis Eine bereits vorkonfigurierte Datei sssd.conf wird erst erzeugt, wenn der Join-Befehl erfolgreich ausgeführt wurde.}}} {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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== {{{#!vorlage 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: {{{#!vorlage Befehl 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: {{{#!vorlage Tabelle 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 }}} {{{#!vorlage 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 [https://wiki.ubuntuusers.de/Quota/ 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. {{{#!vorlage Befehl 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 {{{#!vorlage 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: {{{#!vorlage Befehl sudo cp /etc/security/pam_mount.conf.xml /etc/security/pam_mount.conf.xml.org}}} Nun wird die Konfigurationsdatei von pam-mount angepasst. {{{#!vorlage Befehl sudoedit /etc/security/pam_mount.conf.xml}}} Zwischen den Zeilen {{{ }}} und {{{ }}} werden folgende Zeilen eingefügt: {{{ }}} '''Info:'''\\ 1. Auch ein bereits vorhandener Ordner unter [https://wiki.ubuntuusers.de/Homeverzeichnis/ $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 [https://de.wikipedia.org/wiki/Group_Policy_Object 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'': {{{ }}} '''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. {{{#!vorlage Tabelle '''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 [https://wiki.ubuntuusers.de/Autostart/#Fuer-alle-Benutzer .desktop Datei], damit das Skript nach einer erfolgreichen Anmeldung am System automatisch ausgeführt wird. Skript erstellen: {{{#!vorlage Befehl 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 {{{#!vorlage 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 ''[https://wiki.ubuntuusers.de/Homeverzeichnis/#Dateien-und-Verzeichnisse-verstecken .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 [https://wiki.ubuntuusers.de/Autostart/#Fuer-alle-Benutzer .desktop Datei] erstellt. {{{#!vorlage Befehl 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 [https://ubuntu.com/blog/new-active-directory-integration-features-in-ubuntu-22-04-part-1 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 [https://wiki.ubuntuusers.de/GNOME_Konfiguration/dconf/ dconf-editor] eh schon möglich sind. Zudem sind die interessanteren Möglichkeiten (An- und Abmeldeskripts) nur als Mitglied des kostenplichtigen [https://ubuntu.com/advantage 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 = ## Weiterführende Linksammlung * [https://wiki.ubuntuusers.de/wiki/tags/Howto/ Liste aller Howtos] ## Nach der Fertigstellung des Howtos bitte die Aufnahme in die Howto-Sammlung über die Schaltfläche "Diskussion" mitteilen. Weitere [https://wiki.ubuntuusers.de/Wiki/Tag/ Tags] sind nicht gestattet! #tag: Howto, Samba, Server, Samba-AD, Client-Join, AD-Benutzerkonten, PAM, pam-mount, Gruppenrichtlinie, GPO, ADsys