## 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, jammy)]] [[Vorlage(Fortgeschritten)]] [[Inhaltsverzeichnis(2)]] =Ziel= Dieses Howto beschreibt eine beispielhafte Erstellung eines Samba4-Fileservers, als Mitgliedsserver in einem [https://wiki.ubuntuusers.de/HowTo/Samba-AD-Server_unter_Ubuntu_20.04_installieren/#Was-ist-ein-Active-Directory-Domain-Controller Active Directory]. Die einzige Aufgabe dieses Fileservers ist die Bereitstellung inkl. Größenbeschränkung von Speicherplatz für AD-Benutzer bzw. deren persönlichen Basisordner. {{{#!vorlage Hinweis Zum leichteren Verständins werden alle Vorgaben (Bezeichnungen, Realm und IP-Adressen) aus dem Howto [https://wiki.ubuntuusers.de/HowTo/Samba-AD-Server_unter_Ubuntu_20.04_installieren/ Samba-AD-Server] benutzt und ergänzt das Howto [https://wiki.ubuntuusers.de/Howto/Samba-AD_Tipps/ Samba-AD Tipps]. }}} =Vorgaben= {{{#!vorlage Hinweis Dieses Howto setzt voraus, dass der Fileserver unter Verwendung der nachstehenden Vorgaben neu installiert wird, weil es bei der Verwendung eines bereits bestehenden Servers bei einigen Befehlen zu Fehlern kommen könnte und insbesondere bei Nutzung einer älteren Serverversion zu Fehlern kommen wird!}}} {{{#!vorlage Tabelle Allgemein +++ Serverversion: min. 22.04.x | Samba Version: 4.15.x +++ Sprache: Deutsch | Tastaturlayout: Deutsch }}} {{{#!vorlage Tabelle Netzwerkverbindungen +++ IPv4 Methode: Manuell | Subnetz: 10.10.20.0/24 +++ Adresse: 10.10.20.240 | Gateway: 10.10.20.1 +++ Namensserver: 10.10.20.220 | Suchdomänen: heim.lan }}} {{{#!vorlage Tabelle Begleitete Speicherplatzkonfiguration +++ Eine ganze Festplatte verwenden: Ja +++ Diese Festplatte als LVM-Gruppe konfigurieren Ja +++ Benutzerdefinierte Partitonierung Nein }}} {{{#!vorlage Tabelle Profileinrichtung +++ Ihr Name: fsadmin | Name Ihres Servers: fs01 +++ Benutzernamen auswählen: fsadmin | Passwort wählen und bestätigen: Hero#1234 }}} {{{#!vorlage Tabelle SSH-Einrichtung +++ OpenSSH server installieren: Ja | SSH-Identität importieren: Nein }}} =Vorbereitung= Nach der abgeschlossenen Installation, gemäß den Vorgaben und Neustart des Fileservers sind noch einige Einstellungen und Paketinstallationen notwendig. ==System aktualisieren== {{{#!vorlage Befehl sudo apt update && sudo apt upgrade }}} ==Paketinstallation== {{{#!vorlage Paketinstallation samba, Der [:Samba:] Server realmd, ermöglicht den Domänenbeitritt }}} '''Info:''' Eine evtuelle Nachfrage, welche Dienste neugestartet werden sollen, wird unverändert mit '''''OK''''' bestätigt. Da die Konfigurationsdatei von Samba beim Domänenbeitritt neu erstellt werden soll, wird die vorhande Datei mit {{{#!vorlage Befehl sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org }}} umbenannt. ==FQDN== [https://de.wikipedia.org/wiki/Domain_(Internet)#Fully_Qualified_Domain_Name_(FQDN) FQDN] {de} des Fileservers mit dem Befehl {{{#!vorlage Befehl sudo hostnamectl hostname fs01.heim.lan}}} vergeben und mit {{{#!vorlage Befehl sudo hostname -f}}} überprüfen, ob das Ergebnis {{{fs01.heim.lan}}} lautet. ==Netzwerkeinstellungen== Mit dem Befehl {{{#!vorlage Befehl sudo cat /etc/netplan/*.yaml}}} wird überprüft , ob die beim Installationsvorgang manuell getätigten Einstellungen korrekt übernommen wurden. {{{ # This is the network config written by 'subiquity' network: ethernets: enp0s3: addresses: - 10.10.20.240/24 gateway4: 10.10.20.1 nameservers: addresses: - 10.10.20.220 search: - heim.lan version: 2}}}'''Wichtig:''' Nur die Bezeichnung der Schnittstelle (enp0s3) darf abweichen! ==Zeitserver== Dieser Fileserver sollte die Uhrzeit vom zuständigen DC '''(adc01/10.10.20.220)''' erhalten, um etwaigen Problemen mit [https://de.wikipedia.org/wiki/Kerberos_%28Protokoll%29 Kerberos] {de} vorzubeugen, was unkompliziert per [https://wiki.ubuntuusers.de/systemd/timesyncd/ timesyncd] möglich ist. {{{#!vorlage Befehl sudoedit /etc/systemd/timesyncd.conf }}} Der vorhandene Abschnitt '''[Time]''' wird wie folgt geändert: {{{[Time] NTP=10.10.20.220 FallbackNTP=0.de.pool.ntp.org 1.de.pool.ntp.org}}} Die Änderung speichern und die Datei schließen. ==DNS-Einträge== Damit der Fileserver über seinen Hostname und/oder FQDN angesprochen werden kann, sind entsprechende Einträge im zuständigen [https://de.wikipedia.org/wiki/Domain_Name_System DNS] {de} notwendig, welches als Dienst auf auf dem DC ('''adc01/10.10.20.220''') läuft. Beide Befehle können auch im direkt auf dem Fileserver ausgeführt werden. '''Forward-Lookupzone:''' Der Befehl {{{#!vorlage Befehl sudo samba-tool dns add 10.10.20.220 heim.lan fs01 A 10.10.20.240 -Uadministrator }}} muss mit der Ausgabe {{{Record added successfully}}} enden! '''Reverse-Lookupzone:''' Der Befehl {{{#!vorlage Befehl sudo samba-tool dns add adc01 20.10.10.in-addr.arpa 240 PTR fs01.heim.lan -Uadministrator }}} muss ebenfalls mit der Ausgabe {{{Record added successfully}}} enden! ==Realm-Kontrolle== Jetzt wird noch kontrolliert, ob das AD bekannt und erreichbar ist: {{{#!vorlage Befehl sudo realm discover heim.lan}}} Ergebnis: {{{ type: kerberos realm-name: HEIM.LAN domain-name: heim.lan configured: no server-software: active-directory client-software: sssd required-package: sssd-tools required-package: sssd required-package: libnss-sss required-package: libpam-sss required-package: adcli required-package: samba-common-bin }}} Damit sind die Vorbereitungen für den Domänenbeitritt abgeschlossen. =Domänenbeitritt= Der Domäne beitreten mit {{{#!vorlage Befehl sudo realm join -v --membership-software=samba --client-software=winbind heim.lan}}} '''Info:''' Während des Vorgangs werden automatisch die Pakete ''libnss-winbind'', ''libpam-winbind'' und ''winbind'' installiert. Ein erfolgreicher Abschluss dieses Vorgangs wird in der abschließenden Meldung mit {{{... * Successfully enrolled machine in realm }}} bestätigt. Damit ist der Domänenbeitritt abgeschlossen und der Fileserver wird im AD-Container ''Computers'' gelistet. ==nsswitch.conf anpassen== Aufgrund eines [bug:1980246:Bugs] (Stand: Oktober 2022) müssen zwei Zeilen in der Datei '''nsswitch.conf''' angepasst werden: {{{#!vorlage Befehl sudoedit /etc/nsswitch.conf}}} {{{ passwd: files systemd winbind group: files systemd winbind }}} ==smb.conf anpassen== {{{#!vorlage Befehl sudoedit /etc/samba/smb.conf}}} {{{#!vorlage Tabelle Nr. Die Einträge ändern in +++ 1. winbind use default domain = no winbind use default domain = yes +++ 2. winbind enum groups = no winbind enum groups = yes +++ 3. winbind enum users = no winbind enum users = yes }}} '''Info zu 1.:''' Diese Änderung bewirkt, dass die AD-Benutzer und AD-Gruppen ohne vorangestellten Domänennamen benutzt werden können. '''Bitte nicht anwenden''', wenn die Domäne Vertrauensstellungen zu anderen Domänen hat oder in der Zukunft bekommen soll! '''Info zu 2. + 3.:''' Diese Änderungen lassen winbind die nummerischen Werte der GIDs und UIDs in alphanummerische Werte umwandeln. Damit alle Änderungen übernommen werden, wird der Fileserver per {{{#!vorlage Befehl sudo reboot}}} neu gestartet. ==Home Directorys== Die automatische Erstellung von Home Directorys für AD-Benutzer ist auf diesem Fileserver '''ausdrücklich nicht''' erwünscht, könnte aber nun mit dem Befehl {{{#!vorlage Befehl sudo pam-auth-update --enable mkhomedir }}}erreicht werden. ==Builtin Gruppen kontrollieren== Zuletzt sollte mit {{{#!vorlage Befehl id Administrator}}} überprüft werden, ob die Builtin Gruppen des AD DCs gelesen werden können. Ausgabe bei Nutzung eines deutschsprachigen DCs: {{{ uid=2000500(administrator) gid=2000513(domänen-benutzer) groups=2000513(domänen-benutzer), 2000500(administrator), 2000572(abgelehnte rodc-kennwortreplikationsgruppe), 2000519(organisations-admins), 2000518(schema-admins), 2000520(richtlinien-ersteller-besitzer), 2000512(domänen-admins), 10001 (BUILTIN\users), 10000 (BUILTIN\administrators) }}} Ausgabe bei Nutzung eines englischsprachigen DCs: {{{ uid=2000500(administrator) gid=2000513(domain users) groups=2000513(domain users), 2000500(administrator), 2000572(denied rodc password replication group), 2000519(enterprise admins), 2000518(schema admins), 2000520(group policy creator owners), 2000512(domain admins) 10001 (BUILTIN\users), 10000 (BUILTIN\administrators) }}} =Basisordner= {{{#!vorlage Befehl sudo mkdir /basisordner sudo chmod 1770 /basisordner sudo chgrp "domain users" /basisordner/ }}} ==Freigabe erstellen== {{{#!vorlage Hinweis Auf einem Samba4-Server können Freigaben sowohl in dessen Registry als auch in der Datei '''/etc/samba/smb.conf''' eingerichtet werden. Zum leichteren Verständnis wird in diesem Howto wird die altbekannte Art benutzt. }}} Freigabe in der Datei '''smb.conf''' erstellen: {{{#!vorlage Befehl sudoedit /etc/samba/smb.conf}}} Am Ende der Datei werden folgende Zeilen eingefügt: {{{ [basis] comment = AD Basisordner path = /basisordner browseable = no guest ok = no read only = no }}} Die Änderung speichern und die Datei schließen. Da sie nun komplett ist, wird sie abschließend mit dem Befehl {{{#!vorlage Befehl sudo testparm -s}}} überprüft. Das Ergebnis muss wie folgt aussehen: {{{Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_DOMAIN_MEMBER # Global parameters [global] kerberos method = secrets and keytab realm = HEIM.LAN security = ADS template homedir = /home/%U@%D template shell = /bin/bash winbind enum groups = Yes winbind enum users = Yes winbind offline logon = Yes winbind refresh tickets = Yes winbind use default domain = Yes workgroup = HEIM idmap config * : range = 10000-999999 idmap config heim : backend = rid idmap config heim : range = 2000000-2999999 idmap config * : backend = tdb [basis] browseable = No comment = AD Basisordner path = /basisordner read only = No }}} ===Ordner=== Die Erststellung der gewünschten Basisordner für bestimmte AD-Benutzer ist mittels [https://learn.microsoft.com/de-de/troubleshoot/windows-server/system-management-components/remote-server-administration-tools Windows-RSAT] {de} und entsprechender Gruppenrichtlinie zwar wesentlich komfortabler, lässt sich aber auch manuell realisieren. '''Beispiel: '''{{{#!vorlage Befehl sudo mkdir -p /basisordner/peterp/Documents}}} darf keine Rückmeldung erzeugen. Nun werden noch die notwendigen Berechtigungen mit {{{#!vorlage Befehl sudo chown -cR peterp:"domain users" /basisordner/peterp }}} vergeben und muss folgende Rückmeldung anzeigen: {{{changed ownership of '/basisordner/peterp/Documents' from root:root to peterp:domain users changed ownership of '/basisordner/peterp' from root:root to peterp:domain users}}} '''Wichtig:''' Das entsprechende AD-Benutzerkonto (hier: Peter Pan | '''peterp''') muss bereits existieren! '''Hinweis:''' Es wurde nicht nur der Basisordner für '''peterp''' erstellt, sondern auch der Ordner (Documents) - zur Speicherung seiner persönlichen Dokumente. =Quota= Mit Quota ist es nicht möglich den Speicherplatz von Freigaben oder Ordnern direkt zu limitieren. Die Limitierungen beziehen auf Gruppen und/oder Benutzer und stehen nur auf vorab konfigurierten Partitionen zur Verfügung. Allerdings lassen sich die Limitierungen kombinieren, was für eine gewisse Flexibilität sorgt. {{{#!vorlage Hinweis In diesem Howto wird nur ein Bruchteil der Möglichkeiten von Quota benutzt. Zudem werden nur die notwendigsten Hinweise und Erklärungen gegeben! Weitere Informationen findet man im entsprechenden [https://wiki.ubuntuusers.de/Quota/ Wiki-Artikel], im Internet oder detailliert in der Manpage von Quota. }}} ==Installation== {{{#!vorlage Paketinstallation quota, Das eigentliche Programm quotatool, Komandozeilentools }}} ==fstab anpassen== In dem folgenden Beispiel soll Quota auf der Partition aktviert werden, die unter / gemountet wird. {{{#!vorlage Befehl sudoedit /etc/fstab}}} {{{xxxxxxxxxxxxxx / ext4 defaults 0 1}}} durch {{{xxxxxxxxxxxxxx / ext4 defaults,usrquota,grpquota 0 1}}} ersetzen. ('''x''' dient hier lediglich als Platzhalter!) Den Fileserver mit {{{#!vorlage Befehl sudo reboot}}}erneut starten lassen. ==Quota konfigurieren== Zunächst wird Quota nach dem Neustart des Fileservers per {{{#!vorlage Befehl sudo quotaoff /}}} einmalig deaktiviert, um mit dem Befehl {{{#!vorlage Befehl sudo quotacheck -ugm / }}} die notwendigen Dateien '''aquota.user''' und '''aquota.group''' erstellen zu lassen, die anschließend in der Ausgabe des Befehls {{{#!vorlage Befehl sudo ls /}}} gelistet werden müssen. Jetzt wird Quota mit dem Befehl {{{#!vorlage Befehl sudo quotaon -v /}}} wieder aktiviert, um die gewünschten Speicherplatzbeschränkungen (Limitierungen) einrichten zu können. == Limitierung (Gruppen)== Da jeder AD-Benutzer in der Regel automatisch zur AD-Gruppe ''domain users'' gehört, kann man den Speicherplatz für diese Gruppe auf z. B. 30 GB beschränken, den sich alle Mitglieder dieser Gruppe '''teilen''' müssen! {{{#!vorlage Befehl sudo setquota -g 'domain users' 29296875K 2929675K 0 0 /}}} '''Info:''' Die Angaben zur Limitierung erfolgen als ganzzahlige gerundete Werte in Kibibyte (KiB), Mebibyte (MiB), Gibibyte (GiB) oder Tebibyte (TiB). '''Beispiele:''' {{{#!vorlage Tabelle Wert in [KiB] Wert in [MiB] Wert in [GiB] Wert in [TiB] +++ 30 GB 2929675K 28610M 28G Angabe nicht möglich, da die Ganzzahl 0 ist. +++ 2 GB 1953125K 1907M 2G Angabe nicht möglich, da die Ganzzahl 0 ist. }}} '''Tipp:''' Zur Vereinfachung der Umrechnung sollte man einen geeigneten [https://www.umrechnung.org/masseinheiten-datenmenge-umrechnen-bit-byte-mb/datenmenge-filegroesse-speicherplatz.htm Rechner] {de} benutzen. ==Limitierung (Benutzer)== Da die Limitierung pro Gruppe meist nicht ausreicht, sollte man eine zusätzlich reduzierende Limitierung pro Benutzer einrichten. Im folgenden Beispiel wird der Speicherplatz vom AD-Benutzer '''peterp''' auf 2 GB verkleinert, obwohl seiner primären AD-Gruppe (domain users) 30 GB zur Verfügung gestellt wurde: {{{#!vorlage Befehl sudo setquota -u peterp 1907M 1907M 0 0 / }}} '''Info:''' Limitierungen für Benutzer '''(aquota.user''') überschreiben stets die Limitierungen der Gruppe ('''aquota.group''') - aber nur, wenn es um eine zusätzliche Reduzierung des Speicherplatzes handelt! Es ist also zunächst nicht möglich einem AD-Benutzer mehr Speicherplatz zuzuweisen (z.B. 35 GB), als durch seine primäre AD-Gruppe (hier 30 GB) bereits vorgegeben ist. ===Alternativen=== Soll der AD-Benutzer '''peterp''' in der AD-Gruppe verbleiben und ihm trotzdem 35 GB zur Verfügung gestellt werden, gibt es verschiedene {{{#!vorlage Tabelle Möglichkeiten: Hinweis: +++ A. Das Limit der primären AD-Gruppe von 30 GB auf z.B. 65 GB erhöhen. | Alle anderen Mitglieder müssen dann aber eine zusätzliche Benutzer-Limitierung auf 30 GB erhalten. +++ B. Eine neue primäre AD-Gruppe für den AD-Benutzer erstellen, deren Limit min. 35 GB beträgt. | Einfache Lösung, die aber gut dokumentiert werden muss! +++ C. Die Limitierung für Gruppen aufheben und jeden AD-Benutzer einzeln limitieren. | Fehleranfällig, wenn ein AD-Benutzer vergessen wird.}}} ==Tipps zur Limitierung== * Niemals die gesamte Größe einer Partion für Freigaben zur Verfügung stellen. * Auch wenn es zunächst sehr aufwendig erscheint, sollte man sich für eine Kombination aus Gruppen- und zusätzlich reduzierende Benutzerlimitierung entscheiden, da man sonst Gefahr läuft, dass ein einzelner AD-Benutzer unkontrolliert den gesamten Speicherplatz seiner primären AD-Gruppe belegen kann. ==Reports== Um zu kontrollieren wieviel Speicherplatz zugewiesen und verbraucht wurde dient der Befehl ''repquota''. {{{#!vorlage Befehl sudo repquota -gs / | sed 1,5d | column -t}}} zeigt eine Übersicht für die Gruppen. {{{#!vorlage Befehl sudo repquota -us / | sed 1,5d | column -t}}}zeigt eine Übersicht für die Benutzer. '''Hinweis:''' Es werden nur Benutzer und Gruppen gelistet, die bereits Daten auf die Partition geschrieben haben! ===Grace Period=== Da in diesem Howto das Soft Limit gleichzeitig das Hard Limit darstellt, ist das Setzen einer Grace Period nicht notwendig. =Links= [tag:Howto:Howto-Liste] {Übersicht} - Übersicht aller Howto-Artikel #tag: Fileserver, Samba, AD, Active Directory, Quota, Basisordner,Howto ## 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