staging.inyokaproject.org

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:


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.

Howto-Liste - Übersicht aller Howto-Artikel

Diese Revision wurde am 12. November 2022 16:03 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Quota, Active Directory, AD, Howto, Basisordner, Fileserver, Samba