Samba Mitgliedsserver

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
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

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

  1. Bereiten Sie fs vor und holen Sie sich als administrator ein Kerberos-Ticket.
  2. Schreiben Sie die smb.conf, prüfen Sie mit testparm und treten Sie der Domäne bei.
  3. Prüfen Sie den Beitritt mit allen Befehlen aus „Prüfen“. Welche UID hat max, und wie errechnet sie sich aus seiner SID?
  4. Melden Sie sich per ssh als max an fs an. Wird das Home-Verzeichnis angelegt?
  5. Richten Sie die Freigabe daten ein und setzen Sie die Rechte von win11 aus. Prüfen Sie mit getfacl.
  6. Geben Sie max ein Home-Laufwerk H: auf fs.

Vertiefung

  1. Vergleichen Sie wbinfo -n max und wbinfo -S <SID>. Was ist die RID?
  2. Stellen Sie auf idmap ad um. Was müssen Sie dafür im AD eintragen?
  3. Wie oft ändert winbind das Maschinenpasswort? Lösen Sie es mit net ads changetrustpw von Hand aus und prüfen Sie danach klist -k.
  4. 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

Weiter