Samba-Fileserver im Active Directory
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
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.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Ziel¶
Dieses Howto beschreibt eine beispielhafte Erstellung eines Samba4-Fileservers, als Mitgliedsserver in einem 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.
Hinweis:
Zum leichteren Verständins werden alle Vorgaben (Bezeichnungen, Realm und IP-Adressen) aus dem Howto Samba-AD-Server benutzt und ergänzt das Howto Samba-AD Tipps.
Vorgaben¶
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!
Allgemein | ||||
Serverversion: | min. 22.04.x | | | Samba Version: | 4.15.x |
Sprache: | Deutsch | | | Tastaturlayout: | Deutsch |
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 |
Begleitete Speicherplatzkonfiguration | |
Eine ganze Festplatte verwenden: | Ja |
Diese Festplatte als LVM-Gruppe konfigurieren | Ja |
Benutzerdefinierte Partitonierung | Nein |
Profileinrichtung | ||||
Ihr Name: | fsadmin | | | Name Ihres Servers: | fs01 |
Benutzernamen auswählen: | fsadmin | | | Passwort wählen und bestätigen: | Hero#1234 |
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¶
sudo apt update && sudo apt upgrade
Paketinstallation¶
samba (Der Samba Server)
realmd (ermöglicht den Domänenbeitritt)
Befehl zum Installieren der Pakete:
sudo apt-get install samba realmd
Oder mit apturl installieren, Link: apt://samba,realmd
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
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org
umbenannt.
FQDN¶
FQDN 🇩🇪 des Fileservers mit dem Befehl
sudo hostnamectl hostname fs01.heim.lan
vergeben und mit
sudo hostname -f
überprüfen, ob das Ergebnis
fs01.heim.lan
lautet.
Netzwerkeinstellungen¶
Mit dem 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 Kerberos 🇩🇪 vorzubeugen, was unkompliziert per timesyncd möglich ist.
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 DNS 🇩🇪 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
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
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:
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
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 Bugs (Stand: Oktober 2022) müssen zwei Zeilen in der Datei nsswitch.conf angepasst werden:
sudoedit /etc/nsswitch.conf
passwd: files systemd winbind group: files systemd winbind
smb.conf anpassen¶
sudoedit /etc/samba/smb.conf
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
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
sudo pam-auth-update --enable mkhomedir
erreicht werden.
Builtin Gruppen kontrollieren¶
Zuletzt sollte mit
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¶
sudo mkdir /basisordner sudo chmod 1770 /basisordner sudo chgrp "domain users" /basisordner/
Freigabe erstellen¶
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:
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
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 Windows-RSAT 🇩🇪 und entsprechender Gruppenrichtlinie zwar wesentlich komfortabler, lässt sich aber auch manuell realisieren.
Beispiel:
sudo mkdir -p /basisordner/peterp/Documents
darf keine Rückmeldung erzeugen.
Nun werden noch die notwendigen Berechtigungen mit
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.
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 Wiki-Artikel, im Internet oder detailliert in der Manpage von Quota.
Installation¶
quota (Das eigentliche Programm)
quotatool (Komandozeilentools)
Befehl zum Installieren der Pakete:
sudo apt-get install quota quotatool
Oder mit apturl installieren, Link: apt://quota,quotatool
fstab anpassen¶
In dem folgenden Beispiel soll Quota auf der Partition aktviert werden, die unter / gemountet wird.
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
sudo reboot
erneut starten lassen.
Quota konfigurieren¶
Zunächst wird Quota nach dem Neustart des Fileservers per
sudo quotaoff /
einmalig deaktiviert, um mit dem Befehl
sudo quotacheck -ugm /
die notwendigen Dateien aquota.user und aquota.group erstellen zu lassen, die anschließend in der Ausgabe des Befehls
sudo ls /
gelistet werden müssen.
Jetzt wird Quota mit dem 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!
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:
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 Rechner 🇩🇪 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:
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
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.
sudo repquota -gs / | sed 1,5d | column -t
zeigt eine Übersicht für die Gruppen.
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¶
Howto-Liste - Übersicht aller Howto-Artikel