Samba Mitgliedsserver
Version vom 18. Oktober 2026, 16:46 Uhr von Thomas.will (Diskussion | Beiträge) (Neue Seite (Kurs Linux - Samba))
| Kurs | Lab | Rechner | Domäne |
|---|---|---|---|
| Linux - Samba | Linux - Samba Lab | fs · 10.2XX.1.31 | ad.it2XX.int |
Einfach erklärt
- Ein Mitgliedsserver ist ein Linux-Rechner, der einer Domäne beigetreten ist. Er hat dort ein Maschinenkonto wie ein Windows-Client.
- Die Benutzer kommen jetzt aus der Domäne. winbind macht sie auf Linux sichtbar, als wären es lokale Benutzer.
- Jeder Domänenbenutzer braucht unter Linux eine UID. Woher sie kommt, legt die idmap fest.
- Rechte auf Freigaben kann man jetzt bequem von Windows aus setzen, im Explorer unter Sicherheit.
Das Wichtigste
- Voraussetzungen wie immer: DNS auf den DC, Name richtig, Zeit synchron.
- security = ADS, workgroup und realm passend zur Domäne.
- Beitreten mit net ads join, prüfen mit net ads testjoin.
- Seit Samba 4.21 beschreibt man Keytabs in der smb.conf mit sync machine password to keytab und erzeugt sie mit net ads keytab create. net ads keytab add gibt es nicht mehr.
Vorbereitung
- /etc/hosts
127.0.0.1 localhost 10.201.1.31 fs.ad.it201.int fs
- hostnamectl set-hostname fs
- /etc/resolv.conf
nameserver 10.201.1.11 search ad.it201.int
- Zeit vom DC: /etc/systemd/timesyncd.conf.d/ad.conf
[Time] NTP=win-dc.ad.it201.int
- systemctl restart systemd-timesyncd; timedatectl timesync-status
- Siehe auch Systemd Baustein Zeit und Sitzungen.
Installation
- apt install samba winbind libnss-winbind libpam-winbind krb5-user acl smbclient
- krb5-user fragt nach dem Realm: AD.IT201.INT
- /etc/krb5.conf
[libdefaults]
default_realm = AD.IT201.INT
dns_lookup_realm = false
dns_lookup_kdc = true
- Test: kinit administrator und klist
Die smb.conf
- mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
[global] workgroup = AD realm = AD.IT201.INT security = ADS idmap config * : backend = tdb idmap config * : range = 3000-7999 idmap config AD : backend = rid idmap config AD : range = 10000-999999 winbind use default domain = yes winbind refresh tickets = yes template shell = /bin/bash template homedir = /home/%U vfs objects = acl_xattr map acl inherit = yes sync machine password to keytab = /etc/krb5.keytab:spn_prefixes=host:account_name:sync_spns:sync_kvno:machine_password [daten] path = /srv/samba/daten read only = no
| Option | Bedeutung |
|---|---|
| idmap config * | Bereich für eingebaute Konten wie SYSTEM, darf sich mit nichts überschneiden |
| idmap config AD : backend = rid | UID = Anfang des Bereichs + RID des Benutzers. Auf allen Servern gleich, ohne Pflege im AD |
| winbind use default domain | Benutzer heißen max statt AD\max |
| template shell, template homedir | Shell und Home für Domänenbenutzer |
| vfs objects = acl_xattr | speichert Windows-Rechte im Dateisystem, damit man sie im Explorer setzen kann |
| sync machine password to keytab | legt /etc/krb5.keytab an und hält sie aktuell, z.B. für ssh mit Kerberos |
| idmap-Backend | UID kommt aus | Wann |
|---|---|---|
| rid | der RID des Kontos, also aus der SID | einfach, ohne Unix-Attribute im AD |
| ad | den Attributen uidNumber und gidNumber im AD | wenn UIDs auch auf Rechnern ohne winbind gleich sein müssen, z.B. NFS |
| tdb | einer lokalen Datenbank, wird hochgezählt | nur für den Bereich *, nie für die Domäne |
- testparm
Beitreten
kinit administrator net ads join -k net ads testjoin net ads keytab create klist -k
- -k benutzt das Kerberos-Ticket. Alternativ net ads join -U administrator.
- Der Beitritt legt den DNS-Eintrag für fs selbst an. Prüfen: host fs.ad.it201.int
- systemctl restart smbd winbind
- nmbd braucht ein Mitgliedsserver nur für NetBIOS. Sonst: systemctl disable --now nmbd
Domänenbenutzer unter Linux
- /etc/nsswitch.conf
passwd: files systemd winbind group: files systemd winbind
- Home-Verzeichnisse beim ersten Anmelden anlegen lassen:
- pam-auth-update --enable mkhomedir
wbinfo -t wbinfo -u wbinfo -g getent passwd max id max su - max
- wbinfo -t prüft das Maschinenkonto: checking the trust secret … succeeded
Freigabe mit Windows-Rechten
- Damit Domänen-Admins im Explorer Rechte setzen dürfen, brauchen sie ein Sonderrecht auf dem Server:
net rpc rights grant "AD\Domain Admins" SeDiskOperatorPrivilege -U administrator net rpc rights list privileges SeDiskOperatorPrivilege -U administrator
- Das Verzeichnis gehört root und den Domänen-Admins:
mkdir -p /srv/samba/daten chown root:"domain admins" /srv/samba/daten chmod 0770 /srv/samba/daten
- Auf win11 als AD\Administrator: \\fs\daten, Rechtsklick, Eigenschaften, Sicherheit. Dort wie bei einem Windows-Server Gruppen hinzufügen, z.B. verwaltung mit Ändern.
- Unter Linux sieht man das Ergebnis mit getfacl /srv/samba/daten und samba-tool ntacl get /srv/samba/daten.
Home und Profile
- Persönliche Laufwerke für alle Domänenbenutzer:
[homes] browseable = no read only = no valid users = %S
- Im AD beim Benutzer eintragen, Reiter Profil: Basisordner \\fs\%username% als Laufwerk H:
- Oder mit PowerShell: Set-ADUser max -HomeDrive H: -HomeDirectory \\fs\max
Prüfen
| Was | Befehl | Erwartet |
|---|---|---|
| Beitritt | net ads testjoin | Join is OK |
| Maschinenkonto | wbinfo -t | succeeded |
| Benutzer | getent passwd max | max:*:11105:10513::/home/max:/bin/bash |
| Gruppen | id max | … domain users … |
| Keytab | klist -k | host/fs.ad.it201.int und FS$ |
| Freigabe | smbclient //fs/daten -U max -c ls | kein Fehler |
Stolperfallen
- idmap-Bereiche überschneiden sich: Benutzer haben plötzlich falsche Rechte. Die Bereiche von * und AD dürfen sich nie überlappen.
- nsswitch.conf vergessen: wbinfo -u zeigt Benutzer, getent passwd max aber nicht.
- Rechte im Explorer lassen sich nicht setzen: SeDiskOperatorPrivilege fehlt oder acl_xattr ist nicht eingetragen.
- Alte Anleitungen mit net ads keytab add: Gibt es seit Samba 4.21 nicht mehr. Stattdessen sync machine password to keytab.
- Snapshot zurückgesetzt: Das Maschinenpasswort auf fs ist alt, wbinfo -t scheitert. Neu beitreten.
Übungen
Grundübungen
- Bereiten Sie fs vor und holen Sie sich als administrator ein Kerberos-Ticket.
- Schreiben Sie die smb.conf, prüfen Sie mit testparm und treten Sie der Domäne bei.
- Prüfen Sie den Beitritt mit allen Befehlen aus „Prüfen“. Welche UID hat max, und wie errechnet sie sich aus seiner SID?
- Melden Sie sich per ssh als max an fs an. Wird das Home-Verzeichnis angelegt?
- Richten Sie die Freigabe daten ein und setzen Sie die Rechte von win11 aus. Prüfen Sie mit getfacl.
- Geben Sie max ein Home-Laufwerk H: auf fs.
Vertiefung
- Vergleichen Sie wbinfo -n max und wbinfo -S <SID>. Was ist die RID?
- Stellen Sie auf idmap ad um. Was müssen Sie dafür im AD eintragen?
- Wie oft ändert winbind das Maschinenpasswort? Lösen Sie es mit net ads changetrustpw von Hand aus und prüfen Sie danach klist -k.
- Was steht im AD jetzt beim Computerkonto FS? Get-ADComputer fs -Properties *
Fehlersuche
- 1. net ads join meldet
- Failed to join domain: failed to lookup DC info
fs findet den DC nicht. /etc/resolv.conf zeigt nicht auf 10.2XX.1.11. host -t SRV _ldap._tcp.ad.it2XX.int prüfen.
- 2. wbinfo -u zeigt Benutzer, aber id max sagt
- no such user
In /etc/nsswitch.conf fehlt winbind bei passwd und group.
- 3. kinit administrator meldet
- Cannot find KDC for realm "ad.it2XX.int"
Der Realm ist klein geschrieben. Kerberos-Realms sind in Großbuchstaben: kinit administrator@AD.IT2XX.INT, und default_realm in /etc/krb5.conf prüfen.
- 4. Nach dem Zurücksetzen der VM auf einen Snapshot scheitert wbinfo -t
Das Maschinenpasswort hat sich seit dem Snapshot geändert. net ads join -k noch einmal ausführen.
- 5. Im Explorer kommt beim Setzen von Rechten
- Zugriff verweigert
Die Domänen-Admins haben SeDiskOperatorPrivilege nicht, oder /srv/samba/daten gehört nicht root:"domain admins". net rpc rights list privileges SeDiskOperatorPrivilege
Vertiefung
- Debian Samba ADS Member · Kerberos client samba · Samba-tool ntacl
- https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member