Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Dokumentation zu SUSE Enterprise Storage 7.1 / Betriebs- und Verwaltungshandbuch / Zugreifen auf Cluster-Daten / Exportieren von Ceph-Daten mit Samba
Gilt für SUSE Enterprise Storage 7.1

24 Exportieren von Ceph-Daten mit Samba

Mit diesem Kapitel wird erläutert, wie Sie Daten, die in einem Ceph-Cluster gespeichert sind, über eine Samba-/CIFS-Freigabe exportieren, sodass Sie problemlos von Windows*-Client-Computern darauf zugreifen können. Hier erfahren Sie außerdem, wie Sie ein Ceph-Samba-Gateway für die Einbindung in Active Directory in der Windows*-Domäne konfigurieren, sodass Benutzer damit authentifiziert und autorisiert werden können.

Anmerkung
Anmerkung: Samba-Gateway-Leistung

Angesichts des erhöhten Protokoll-Overheads und der zusätzlichen Latenz durch zusätzliche Netzwerk-Hops zwischen Client und Speicher kann ein Zugriff auf CephFS über einen Samba Gateway die Anwendungsleistung im Vergleich zu nativen CephFS- oder Object-Gateway-Clients erheblich senken.

24.1 Exportieren von CephFS über eine Samba-Freigabe

Warnung
Warnung: Protokollübergreifender Zugriff

Native CephFS- und NFS-Clients sind nicht durch Dateisperren in Samba eingeschränkt und umgekehrt. In Anwendungen, die auf der protokollübergreifenden Dateisperre beruhen, können dort Beschädigungen auftreten, wenn der Zugriff auf CephFS-gestützte Samba-Freigabepfade auf andere Weise erfolgt.

24.1.1 Konfigurieren und Exportieren von Samba-Paketen

Für die Konfiguration und den Export einer Samba-Freigabe müssen die folgenden Pakete installiert werden: samba-ceph und samba-winbind. Wenn diese Pakete nicht installiert sind, installieren Sie sie:

cephuser@smb > zypper install samba-ceph samba-winbind

24.1.2 Beispiel mit einem einzelnen Gateway

Zur Vorbereitung auf den Export einer Samba-Freigabe wählen Sie einen geeigneten Knoten, der als Samba Gateway fungieren soll. Der Knoten benötigt den Zugriff auf das Ceph-Client-Netzwerk sowie ausreichende CPU-, Arbeitsspeicher- und Netzwerkressourcen.

Die Failover-Funktionalität kann mit CTDB und mit der SUSE Linux Enterprise High Availability Extension zur Verfügung gestellt werden. Weitere Informationen zur HA-Einrichtung finden Sie in Abschnitt 24.1.3, „Konfigurieren von Hochverfügbarkeit“.

  1. Vergewissern Sie sich, dass sich in Ihrem Cluster bereits ein funktionierendes CephFS befindet.

  2. Erstellen Sie einen für Samba Gateway spezifischen Schlüsselbund auf dem Ceph-Admin-Knoten und kopieren Sie ihn in beide Samba-Gateway-Knoten:

    cephuser@adm > ceph auth get-or-create client.samba.gw mon 'allow r' \
     osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    cephuser@adm > scp ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/

    Ersetzen Sie SAMBA_NODE durch den Namen des Samba-Gateway-Knotens.

  3. Die folgenden Schritte werden im Samba-Gateway-Knoten ausgeführt. Installieren Sie Samba zusammen mit dem Ceph-Integrationspaket:

    cephuser@smb > sudo zypper in samba samba-ceph
  4. Ersetzen Sie den Standardinhalt der Datei /etc/samba/smb.conf wie folgt:

    [global]
      netbios name = SAMBA-GW
      clustering = no
      idmap config * : backend = tdb2
      passdb backend = tdbsam
      # disable print server
      load printers = no
      smbd: backgroundqueue = no
    
    [SHARE_NAME]
      path = CEPHFS_MOUNT
      read only = no
      oplocks = no
      kernel share modes = no

    Der obige CEPHFS_MOUNT-Pfad muss vor dem Start von Samba mit einer Kernel-CephFS-Freigabekonfiguration eingehängt werden. Siehe Abschnitt 23.3, „Einhängen von CephFS in /etc/fstab.

    Die obige Freigabekonfiguration verwendet den Linux-Kernel-CephFS-Client, der aus Leistungsgründen empfohlen wird. Alternativ kann auch das Samba-Modul vfs_ceph zur Kommunikation mit dem Ceph-Cluster verwendet werden. Die folgenden Anweisungen sind für ältere Versionen gedacht und werden für neue Samba-Installationen nicht empfohlen:

    [SHARE_NAME]
      path = /
      vfs objects = ceph
      ceph: config_file = /etc/ceph/ceph.conf
      ceph: user_id = samba.gw
      read only = no
      oplocks = no
      kernel share modes = no
    Tipp
    Tipp: Oplocks und Freigabemodi

    oplocks (auch als SMB2+-Leases bezeichnet) steigern die Leistung durch aggressives Client-Caching, sind jedoch derzeit unsicher, wenn Samba gemeinsam mit anderen CephFS-Clients bereitgestellt wird, z. B. Kernel-mount.ceph, FUSE oder NFS Ganesha.

    Wenn der gesamte Zugriff auf die Pfade im CephFS-Dateisystem ausschließlich über Samba abläuft, kann der Parameter oplocks gefahrlos aktiviert werden.

    In einer Freigabe, die mit dem vfs-Modul von CephFS ausgeführt wird, müssen die Kernel-Freigabemodi derzeit deaktiviert werden, damit die Dateibereitstellung fehlerfrei erfolgt.

    Wichtig
    Wichtig: Zulassen des Zugriffs

    Samba ordnet SMB-Benutzer und -Gruppen lokalen Konten zu. Lokalen Benutzern kann mit folgendem Kommando ein Passwort für den Zugriff auf Samba-Freigaben zugewiesen werden:

    # smbpasswd -a USERNAME

    Für eine erfolgreiche E/A muss die Zugriffssteuerungsliste (ACL) des Freigabepfads den Zugriff des über Samba verbundenen Benutzers zulassen. Zum Bearbeiten der ACL können Sie eine temporäre Einhängung über den CephFS-Kernel-Client vornehmen und die Dienstprogramme chmod, chown oder setfacl auf den Freigabepfad anwenden. Mit folgendem Kommando gestatten Sie beispielsweise den Zugriff aller Benutzer:

    # chmod 777 MOUNTED_SHARE_PATH

24.1.2.1 Starten von Samba-Services

Starten Sie eigenständige Samba-Services mit den folgenden Kommandos oder starten Sie sie neu:

# systemctl restart smb.service
# systemctl restart nmb.service
# systemctl restart winbind.service

Um sicherzustellen, dass die Samba-Services beim Booten starten, aktivieren Sie sie mit:

# systemctl enable smb.service
# systemctl enable nmb.service
# systemctl enable winbind.service
Tipp
Tipp: Optionale Services nmb und winbind

Wenn Sie keine Netzwerkfreigaben durchsuchen müssen, brauchen Sie den nmb-Service nicht zu aktivieren und zu starten.

Der winbind-Service wird nur benötigt, wenn er als Active Directory-Domänenmitglied konfiguriert ist. Siehe Abschnitt 24.2, „Verbinden von Samba-Gateway und Active Directory“.

24.1.3 Konfigurieren von Hochverfügbarkeit

Wichtig
Wichtig: Keine Unterstützung für transparentes Failover

Eine Implementierung mit Samba + CTDB und mehreren Knoten bietet eine höhere Verfügbarkeit als ein Einzelknoten (siehe Kapitel 24, Exportieren von Ceph-Daten mit Samba), doch ein clientseitiges, transparentes Failover wird nicht unterstützt. Der Ausfall eines Samba-Gateway-Knotens führt mit großer Wahrscheinlichkeit zu einer kurzen Unterbrechung für die Anwendungen.

In diesem Abschnitt finden Sie ein Beispiel, wie eine Hochverfügbarkeitskonfiguration aus Samba-Servern mit zwei Knoten eingerichtet wird. Für die Einrichtung ist die SUSE Linux Enterprise High Availability Extension erforderlich. Die beiden Knoten werden earth (192.168.1.1) und mars (192.168.1.2) genannt.

Detaillierte Informationen zu SUSE Linux Enterprise High Availability Extension finden Sie unter https://documentation.suse.com/sle-ha/15-SP1/.

Außerdem können Clients über zwei virtuelle IP-Adressen nach dem Floating-IP-Prinzip eine Verbindung mit dem Service herstellen, und zwar unabhängig davon, auf welchem physischen Knoten er ausgeführt wird. 192.168.1.10 wird für die Cluster-Verwaltung mit Hawk2 verwendet und 192.168.2.1 exklusiv für die CIFS-Exporte. Dies erleichtert später die Anwendung von Sicherheitsbeschränkungen.

Das folgende Verfahren beschreibt das Installationsbeispiel. Weitere Informationen finden Sie unter https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-install-quick/.

  1. Erstellen Sie einen für das Samba Gateway spezifischen Schlüsselbund auf dem Admin-Knoten und kopieren Sie ihn in beide Knoten:

    cephuser@adm > ceph auth get-or-create client.samba.gw mon 'allow r' \
        osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    cephuser@adm > scp ceph.client.samba.gw.keyring earth:/etc/ceph/
    cephuser@adm > scp ceph.client.samba.gw.keyring mars:/etc/ceph/
  2. Für die Einrichtung von SLE-HA ist ein Fencing-Gerät erforderlich, um eine Split Brain-Situation zu verhindern, wenn aktive Cluster-Knoten nicht mehr synchronisiert sind. Zu diesem Zweck können Sie ein Ceph RBD-Image mit Stonith Block Device (SBD) verwenden. Weitere Informationen finden Sie in https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/#sec-ha-storage-protect-fencing-setup.

    Falls es noch nicht vorhanden ist, erstellen Sie einen RBD-Pool namens rbd (weitere Informationen finden Sie in Abschnitt 18.1, „Erstellen eines Pools“) und verknüpfen Sie ihn mit rbd (weitere Informationen finden Sie in Abschnitt 18.5.1, „Verknüpfen von Pools mit einer Anwendung“). Erstellen Sie dann ein entsprechendes RBD-Image namens sbd01:

    cephuser@adm > ceph osd pool create rbd
    cephuser@adm > ceph osd pool application enable rbd rbd
    cephuser@adm > rbd -p rbd create sbd01 --size 64M --image-shared
  3. Bereiten Sie earth und mars darauf vor, den Samba Service zu hosten:

    1. Vergewissern Sie sich, dass die folgenden Pakete installiert sind, bevor Sie fortfahren: ctdb, tdb-tools und samba.

      # zypper in ctdb tdb-tools samba samba-ceph
    2. Stellen Sie sicher, dass die Samba- und CTDB-Services gestoppt und deaktiviert sind:

      # systemctl disable ctdb
      # systemctl disable smb
      # systemctl disable nmb
      # systemctl disable winbind
      # systemctl stop ctdb
      # systemctl stop smb
      # systemctl stop nmb
      # systemctl stop winbind
    3. Öffnen Sie Port 4379 Ihrer Firewall in allen Knoten. Dies ist erforderlich, damit CTDB mit anderen Cluster-Knoten kommunizieren kann.

  4. Erstellen Sie die Konfigurationsdateien für Samba in earth. Diese werden später automatisch mit mars synchronisiert.

    1. Fügen Sie eine Liste der privaten IP-Adressen der Samba-Gateway-Knoten in die Datei /etc/ctdb/nodes ein. Weitere Informationen finden Sie auf der CTDB-Handbuch-Seite (man 7 ctdb).

      192.168.1.1
      192.168.1.2
    2. Konfigurieren Sie Samba. Fügen Sie die folgenden Zeilen im Abschnitt [global] von /etc/samba/smb.conf hinzu. Wählen Sie den gewünschten Hostnamen anstelle CTDB-SERVER (alle Knoten im Cluster werden sinnvollerweise als ein großer Knoten mit diesem Namen angezeigt). Tragen Sie auch eine Freigabedefinition ein (Beispiel unter SHARE_NAME):

      [global]
        netbios name = SAMBA-HA-GW
        clustering = yes
        idmap config * : backend = tdb2
        passdb backend = tdbsam
        ctdbd socket = /var/lib/ctdb/ctdb.socket
        # disable print server
        load printers = no
        smbd: backgroundqueue = no
      
      [SHARE_NAME]
        path = /
        vfs objects = ceph
        ceph: config_file = /etc/ceph/ceph.conf
        ceph: user_id = samba.gw
        read only = no
        oplocks = no
        kernel share modes = no

      Hierbei ist zu beachten, dass die Dateien /etc/ctdb/nodes und /etc/samba/smb.conf auf allen Samba-Gateway-Knoten identisch sein müssen.

  5. Installieren Sie den SUSE Linux Enterprise High Availability Cluster und führen Sie ein Bootstrap durch.

    1. Registrieren Sie die SUSE Linux Enterprise High Availability Extension auf den Knoten earth und mars:

      root@earth # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
      root@mars # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
    2. Installieren Sie ha-cluster-bootstrap auf beiden Knoten:

      root@earth # zypper in ha-cluster-bootstrap
      root@mars # zypper in ha-cluster-bootstrap
    3. Ordnen Sie das RBD-Image sbd01 auf beiden Samba-Gateways über rbdmap.service zu.

      Bearbeiten Sie /etc/ceph/rbdmap und fügen Sie einen Eintrag für das SBD-Image hinzu:

      rbd/sbd01 id=samba.gw,keyring=/etc/ceph/ceph.client.samba.gw.keyring

      Aktivieren und starten Sie rbdmap.service:

      root@earth # systemctl enable rbdmap.service && systemctl start rbdmap.service
      root@mars # systemctl enable rbdmap.service && systemctl start rbdmap.service

      Das Gerät /dev/rbd/rbd/sbd01 sollte auf beiden Samba-Gateways verfügbar sein.

    4. Initialisieren Sie den Cluster auf earth und nehmen Sie mars darin auf.

      root@earth # ha-cluster-init
      root@mars # ha-cluster-join -c earth
      Wichtig
      Wichtig

      Während des Vorgangs der Initialisierung und der Aufnahme im Cluster werden Sie interaktiv gefragt, ob Sie SBD verwenden möchten. Bestätigen Sie mit j und geben Sie dann /dev/rbd/rbd/sbd01 als Pfad zum Speichergerät an.

  6. Prüfen Sie den Status des Clusters. Sie sollten zwei Knoten sehen, die im Cluster hinzugefügt wurden:

    root@earth # crm status
    2 nodes configured
    1 resource configured
    
    Online: [ earth mars ]
    
    Full list of resources:
    
     admin-ip       (ocf::heartbeat:IPaddr2):       Started earth
  7. Führen Sie die folgenden Kommandos in earth aus, um die CTDB-Ressource zu konfigurieren:

    root@earth # crm configure
    crm(live)configure# primitive ctdb ocf:heartbeat:CTDB params \
        ctdb_manages_winbind="false" \
        ctdb_manages_samba="false" \
        ctdb_recovery_lock="!/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
            ceph client.samba.gw cephfs_metadata ctdb-mutex"
        ctdb_socket="/var/lib/ctdb/ctdb.socket" \
            op monitor interval="10" timeout="20" \
            op start interval="0" timeout="200" \
            op stop interval="0" timeout="100"
    crm(live)configure# primitive smb systemd:smb \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# primitive nmb systemd:nmb \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# primitive winbind systemd:winbind \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# group g-ctdb ctdb winbind nmb smb
    crm(live)configure# clone cl-ctdb g-ctdb meta interleave="true"
    crm(live)configure# commit
    Tipp
    Tipp: Optionale nmb- und winbind-Primitive

    Wenn Sie keine Netzwerkfreigaben durchsuchen müssen, brauchen Sie das nmb-Primitiv nicht zu aktivieren und zu starten.

    Das winbind-Primitiv wird nur benötigt, wenn es als Active Directory-Domänenmitglied konfiguriert ist. Siehe Abschnitt 24.2, „Verbinden von Samba-Gateway und Active Directory“.

    Die Binärdatei /usr/lib64/ctdb/ctdb_mutex_rados_helper in der Konfigurationsoption ctdb_recovery_lock enthält die Parameter CLUSTER_NAME, CEPHX_USER, RADOS_POOL und RADOS_OBJECT (in dieser Reihenfolge).

    Wenn Sie einen zusätzlichen Parameter für die Sperren-Zeitüberschreitung anhängen, können Sie den Standardwert (10 Sekunden) überschreiben. Bei einem höheren Wert wird die Failover-Zeit des CTDB Recovery Master verlängert, bei einem niedrigeren Wert wird der Recovery Master dagegen unter Umständen fälschlich als ausgefallen erkannt, sodass ein ungeplantes Failover ausgeführt wird.

  8. Fügen Sie eine geclusterte IP-Adresse hinzu:

    crm(live)configure# primitive ip ocf:heartbeat:IPaddr2
        params ip=192.168.2.1 \
        unique_clone_address="true" \
        op monitor interval="60" \
        meta resource-stickiness="0"
    crm(live)configure# clone cl-ip ip \
        meta interleave="true" clone-node-max="2" globally-unique="true"
    crm(live)configure# colocation col-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# order o-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# commit

    Wenn unique_clone_address auf true festgelegt ist, fügt der Ressourcenagent IPaddr2 eine Klon-ID zur angegebenen Adresse hinzu, was zu drei verschiedenen IP-Adressen führt. Diese werden normalerweise nicht benötigt, sind jedoch nützlich beim Lastausgleich. Weitere Informationen zu diesem Thema finden Sie unter https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/#cha-ha-lb.

  9. Überprüfen Sie das Ergebnis:

    root@earth # crm status
    Clone Set: base-clone [dlm]
         Started: [ factory-1 ]
         Stopped: [ factory-0 ]
     Clone Set: cl-ctdb [g-ctdb]
         Started: [ factory-1 ]
         Started: [ factory-0 ]
     Clone Set: cl-ip [ip] (unique)
         ip:0       (ocf:heartbeat:IPaddr2):       Started factory-0
         ip:1       (ocf:heartbeat:IPaddr2):       Started factory-1
  10. Testen Sie es an einem Client-Rechner. Führen Sie auf einem Linux Client das folgende Kommando aus, um zu sehen, ob Sie Dateien vom und zum System kopieren können:

    # smbclient //192.168.2.1/myshare

24.1.3.1 Neustart der Hochverfügbarkeits-Samba-Ressourcen

Nach einer Änderung der Samba- oder CTDB-Konfiguration müssen die Hochverfügbarkeits-Ressourcen möglicherweise neu gestartet werden, damit die Änderungen wirksam werden. Dies lässt sich durch folgende Methoden erreichen:

# crm resource restart cl-ctdb

24.2 Verbinden von Samba-Gateway und Active Directory

Sie können den Ceph Samba Gateway als Mitglied der Samba-Domäne mit Active Directory(AD)-Unterstützung konfigurieren. Als Samba-Domänenmitglied können Sie Domänenbenutzer und Gruppen in lokalen Zugriffssteuerungslisten (ACLs) für Dateien und Verzeichnisse aus dem exportierten CephFS verwenden.

24.2.1 Vorbereiten der Samba-Konfiguration

Dieser Abschnitt enthält die vorbereitenden Schritte vor der eigentlichen Samba-Konfiguration. Der Einstieg mit einer sauberen Umgebung trägt dazu bei, eventuelle Verwirrungen zu vermeiden, und sorgt dafür, dass keine Dateien aus der früheren Samba-Installation mit der neuen Domänenmitglieds-Installation vermischt werden.

Tipp
Tipp: Synchronisieren der Uhren

Die Uhren aller Samba Gateway Knoten müssen mit dem Active Directory-Domänencontroller synchronisiert werden. Ein Taktversatz kann zu Authentifizierungsfehlern führen.

Es dürfen keine Samba- oder Name-Caching-Prozesse ausgeführt werden:

cephuser@smb > ps ax | egrep "samba|smbd|nmbd|winbindd|nscd"

Wenn samba-, smbd-, nmbd-, winbindd- oder nscd-Prozesse in der Ausgabe aufgeführt werden, halten Sie diese Prozesse.

Wenn zuvor eine Samba-Installation auf diesem Host ausgeführt wurde, entfernen Sie die Datei /etc/samba/smb.conf. Entfernen Sie auch alle Samba-Datenbankdateien, z. B. *.tdb- und *.ldb-Dateien. Mit folgendem Kommando rufen Sie eine Liste der Verzeichnisse ab, in denen sich Samba-Datenbanken befinden:

cephuser@smb > smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"

24.2.2 Überprüfen des DNS

Active Directory (AD) sucht mithilfe des DNS nach anderen Domänencontrollern (DCs) und Services wie Kerberos. Die AD-Domänenmitglieder und Server müssen daher in der Lage sein, die AD-DNS-Zonen aufzulösen.

Prüfen Sie, ob der DNS ordnungsgemäß konfiguriert wurde und ob sowohl die Vorwärts- als auch die Rückwärtssuche fehlerfrei aufgelöst werden, beispielsweise:

cephuser@adm > nslookup DC1.domain.example.com
Server:         10.99.0.1
Address:        10.99.0.1#53

Name:   DC1.domain.example.com
Address: 10.99.0.1
cephuser@adm > 10.99.0.1
Server:        10.99.0.1
Address:	10.99.0.1#53

1.0.99.10.in-addr.arpa	name = DC1.domain.example.com.

24.2.3 Auflösen von SRV-Datensätzen

AD sucht mithilfe des SRV nach Services wie Kerberos und LDAP. Prüfen Sie mit der interaktiven nslookup-Shell, ob die SRV-Datensätze fehlerfrei aufgelöst werden, beispielsweise:

cephuser@adm > nslookup
Default Server:  10.99.0.1
Address:  10.99.0.1

> set type=SRV
> _ldap._tcp.domain.example.com.
Server:  UnKnown
Address:  10.99.0.1

_ldap._tcp.domain.example.com   SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = dc1.domain.example.com
domain.example.com      nameserver = dc1.domain.example.com
dc1.domain.example.com  internet address = 10.99.0.1

24.2.4 Kerberos konfigurieren

Samba unterstützt Heimdal- und MIT-Kerberos-Back-Ends. Zum Konfigurieren von Kerberos auf dem Domänenmitglied legen Sie Folgendes in der Datei /etc/krb5.conf fest:

[libdefaults]
	default_realm = DOMAIN.EXAMPLE.COM
	dns_lookup_realm = false
	dns_lookup_kdc = true

Im obigen Exempel wird Kerberos für den Bereich DOMAIN.EXAMPLE.COM konfiguriert. Es wird nicht empfohlen, weitere Parameter in der Datei /etc/krb5.conf festzulegen. Wenn die Datei /etc/krb5.conf eine Zeile include enthält, funktioniert sie nicht; Sie müssen diese Zeile entfernen.

24.2.5 Auflösen des Namens des lokalen Hosts

Wenn Sie einen Host in die Domäne aufnehmen, versucht Samba, den Hostnamen in der AT-DNS-Zone zu registrieren. Hierzu muss das Dienstprogramm net in der Lage sein, den Hostnamen mit DNS oder mit einem passenden Eintrag in der Datei /etc/hosts aufzulösen.

Prüfen Sie mit dem Kommando getent hosts, ob der Hostname fehlerfrei aufgelöst wird:

cephuser@adm > getent hosts example-host
10.99.0.5      example-host.domain.example.com    example-host

Der Hostname und der FQDN dürfen nicht zur IP-Adresse 127.0.0.1 oder zu einer anderen IP-Adresse aufgelöst werden, die nicht mit der IP-Adresse der LAN-Schnittstelle des Domänenmitglieds übereinstimmt. Wenn keine Ausgabe angezeigt oder der Host zu einer falschen IP-Adresse aufgelöst wird und Sie nicht mit DHCP arbeiten, legen Sie den richtigen Eintrag in der Datei /etc/hosts fest:

127.0.0.1      localhost
10.99.0.5      example-host.samdom.example.com    example-host
Tipp
Tipp: DHCP und /etc/hosts

Wenn Sie DHCP verwenden, darf /etc/hosts nur die Zeile „127.0.0.1“ enthalten. Bleiben die Probleme weiterhin bestehen, wenden Sie sich an den Administrator Ihres DHCP-Servers.

Sollen Aliasnamen für den Namen des Computers eingefügt werden, tragen Sie sie am Ende der Zeile ein, die mit der IP-Adresse des Computers beginnt, nicht in die Zeile „127.0.0.1“.

24.2.6 Konfigurieren von Samba

In diesem Abschnitt werden spezielle Konfigurationsoptionen vorgestellt, die Sie in die Samba-Konfiguration aufnehmen müssen.

Die Active Directory-Domänenmitgliedschaft wird in erster Linie durch die Einstellung Sicherheit = ADS zusammen mit den entsprechenden Parametern für die Zuordnung von Kerberos-Bereich und ID im Abschnitt [global] der Datei /etc/samba/smb.conf konfiguriert.

[global]
  security = ADS
  workgroup = DOMAIN
  realm = DOMAIN.EXAMPLE.COM
  ...

24.2.6.1 Auswahl des Back-Ends für die ID-Zuordnung in winbindd

Wenn die Benutzer unterschiedliche Login-Shells und/oder Unix-Basisverzeichnispfade erhalten oder stets dieselbe ID nutzen sollen, verwenden Sie das winbind-Back-End „ad“ und nehmen Sie RFC2307-Attribute in AD auf.

Wichtig
Wichtig: RFC2307-Attribute und ID-Nummern

Die RFC2307-Attribute werden beim Erstellen von Benutzern oder Gruppen nicht automatisch hinzugefügt.

Die ID-Nummern auf einem DC (Nummern im Bereich ab 3.000.000) sind keine RFC2307-Attribute und werden nicht auf Unix-Domänenmitgliedern verwendet. Sollen stets dieselben ID-Nummern gelten, nehmen Sie die Attribute uidNumber und gidNumber in AD auf und verwenden Sie das winbind-Back-End „ad“ auf Unix-Domänenmitgliedern. Sollen die Attribute uidNumber und gidNumber dennoch in AD aufgenommen werden, geben Sie keine Zahlen im Bereich ab 3.000.000 an.

Wenn Ihre Benutzer den Samba-AD-DC lediglich zur Authentifizierung heranziehen, also keine Daten dort speichern und sich nicht dort anmelden, können Sie das winbind-Back-End „rid“ heranziehen. Hiermit werden die Benutzer- und Gruppen-IDs über die Windows*-RID berechnet. Wenn Sie auf jedem Unix-Domänenmitglied denselben Abschnitt [global] in der Datei smb.conf nutzen, erhalten Sie stets dieselben IDs. Beim Back-End „rid“ müssen Sie keine Ergänzungen in AD vornehmen und die RFC2307-Attribute werden ignoriert. Legen Sie beim Back-End „rid“ die Parameter template shell und template homedir in smb.conf fest. Diese Einstellungen gelten global und alle Benutzer erhalten dieselbe Login-Shell und denselben Unix-Basisverzeichnispfad (im Gegensatz zu den RFC2307-Attributen, mit denen Sie individuelle Unix-Basisverzeichnispfade und Shells angeben können).

Für die Einrichtung von Samba steht eine weitere Möglichkeit zur Auswahl: Ihre Benutzer und Gruppen erhalten stets dieselbe ID, doch nur die Benutzer erhalten jeweils dieselbe Login-Shell und denselben Unix-Basisverzeichnispfad. Dies erreichen Sie mit dem winbind-Back-End „ad“ und den Schablonenzeilen in smb.conf. So müssen Sie lediglich die Attribute uidNumber und gidNumber in AD aufnehmen.

Tipp
Tipp: Weitere Informationen zu Back-Ends für die ID-Zuordnung

Weitere Informationen zu den verfügbaren Back-Ends für die ID-Zuordnung finden Sie auf den jeweiligen Handbuchseiten: man 8 idmap_ad, man 8 idmap_rid und man 8 idmap_autorid.

24.2.6.2 Einrichten der Benutzer- und Gruppen-ID-Bereiche

Sobald Sie sich für ein winbind-Back-End entschieden haben, legen Sie die Bereiche für die Option idmap config in smb.conf fest. Auf einem Unix-Domänenmitglied sind standardmäßig mehrere Blöcke mit Benutzer- und Gruppen-IDs reserviert:

Tabelle 24.1: Standardmäßige Benutzer- und Gruppen-ID-Blöcke
IDsBereich
0-999Lokale Systembenutzer und -gruppen.
Ab 1.000Lokale UNIX-Benutzer und -Gruppen.
Ab 10.000DOMAIN-Benutzer und -Gruppen.

Wie aus den obigen Bereichen hervorgeht, darf weder der Bereich „*“ noch der Bereich „DOMAIN“ bei 999 oder weniger beginnen, da diese IDs mit den lokalen Systembenutzern und -gruppen in Konflikt kämen. Lassen Sie außerdem genug Platz für lokale Unix-Benutzer und -Gruppen. idmap config-Bereiche ab 3.000 sind daher ein guter Kompromiss.

Überlegen Sie, inwieweit Ihre „DOMAIN“ noch wachsen wird und ob Sie verbürgte Domänen einplanen sollten. Anschließend können Sie die idmap config-Bereiche wie folgt festlegen:

Tabelle 24.2: ID-Bereiche
DomäneBereich
*3000-7999
DOMAIN10000-999999
TRUSTED1000000-9999999

24.2.6.3 Zuordnen des Domänenadministrator-Kontos zum lokalen root-Benutzer

In Samba können Sie Domänenkonten einem lokalen Konto zuordnen. Mit dieser Funktion können Sie Dateioperationen als ein anderer Benutzer auf dem Dateisystem des Domänenmitglieds ausführen, also nicht mit dem Konto, das die betreffende Operation auf dem Client angefordert hat.

Tipp
Tipp: Zuordnen des Domänenadministrators (optional)

Die Zuordnung des Domänenadministrators zum lokalen root-Konto ist optional. Konfigurieren Sie die Zuordnung nur dann, wenn der Domänenadministrator in der Lage sein muss, Dateioperationen auf dem Domänenmitglied mit root-Berechtigungen auszuführen. Beachten Sie, dass Sie sich auch nach Zuordnung des Administrators zum root-Konto nicht als „Administrator“ bei Unix-Domänenmitgliedern anmelden können.

So ordnen Sie den Domänenadministrator dem lokalen root-Konto zu:

  1. Tragen Sie den folgenden Parameter im Abschnitt [global] der Datei smb.conf ein:

    username map = /etc/samba/user.map
  2. Erstellen Sie die Datei /etc/samba/user.map mit folgendem Inhalt:

    !root = DOMAIN\Administrator
Wichtig
Wichtig

Wenn Sie das ID-Zuordnungs-Back-End „ad“ verwenden, legen Sie nicht das Attribut uidNumber für das Domänenadministratorkonto fest. Ist das Attribut für das Konto festgelegt, überschreibt der Wert die lokale UID „0“ des root-Benutzers und die Zuordnung schlägt fehl.

Weitere Informationen finden Sie unter dem Parameter username map auf der Handbuchseite zu smb.conf (man 5 smb.conf).

24.2.7 Einbindung in die Active Directory-Domäne

Mit folgendem Kommando binden Sie den Host in Active Directory ein:

cephuser@smb > net ads join -U administrator
Enter administrator's password: PASSWORD
Using short domain name -- DOMAIN
Joined EXAMPLE-HOST to dns domain 'DOMAIN.example.com'

24.2.8 Konfigurieren des Name Service Switch (NSS)

Domänenbenutzer und -gruppen stehen nur dann im lokalen System zur Verfügung, wenn Sie die NSS-Bibliothek (Name Service Switch) aktivieren. Ergänzen Sie die folgenden Datenbanken in der Datei /etc/nsswitch.conf mit dem Eintrag winbind:

passwd: files winbind
group:  files winbind
Wichtig
Wichtig: Zu berücksichtigende Aspekte
  • Behalten Sie den Eintrag files als erste Quelle für beide Datenbanken bei. So kann NSS die Domänenbenutzer und -gruppen in den Dateien /etc/passwd und /etc/group nachschlagen, bevor eine Abfrage an den winbind-Dienst erfolgt.

  • Nehmen Sie den Eintrag winbind nicht in die NSS-Shadow-Datenbank auf. Dies kann dazu führen, dass das wbinfo-Dienstprogramm fehlschlägt.

  • Verwenden Sie in der lokalen Datei /etc/passwd nicht dieselben Benutzernamen wie in der Domäne.

24.2.9 Starten der Services

Starten Sie nach den Änderungen an der Konfiguration die Samba-Services neu. Weitere Informationen hierzu finden Sie in Abschnitt 24.1.2.1, „Starten von Samba-Services“ oder in Abschnitt 24.1.3.1, „Neustart der Hochverfügbarkeits-Samba-Ressourcen“.

24.2.10 Testen der winbindd-Konnektivität

24.2.10.1 Senden eines winbindd-Pings

So prüfen Sie, ob der winbindd-Service eine Verbindung zu AD-Domänencontrollern (DC) oder zu einem Primärdomänencontroller (PDC) herstellen kann:

cephuser@smb > wbinfo --ping-dc
checking the NETLOGON for domain[DOMAIN] dc connection to "DC.DOMAIN.EXAMPLE.COM" succeeded

Falls das obige Kommando fehlschlägt, prüfen Sie, ob der winbindd-Service ausgeführt wird und die Datei smb.conf ordnungsgemäß eingerichtet ist.

24.2.10.2 Nachschlagen von Domänenbenutzern und -gruppen

Mithilfe der Bibliothek libnss_winbind können Sie Domänenbenutzer und -gruppen nachschlagen. So schlagen Sie beispielsweise den Domänenbenutzer „DOMAIN\demo01“ nach:

cephuser@smb > getent passwd DOMAIN\\demo01
DOMAIN\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash

So schlagen Sie die Domänengruppe „Domain Users“ nach:

cephuser@smb > getent group "DOMAIN\\Domain Users"
DOMAIN\domain users:x:10000:

24.2.10.3 Zuweisen von Dateiberechtigungen zu Domänenbenutzern und -gruppen

Mithilfe der NSS-Bibliothek (Name Service Switch) können Sie Domänenbenutzerkonten und -gruppen in Kommandos heranziehen. So legen Sie beispielsweise den Domänenbenutzer „demo01“ als Eigentümer einer Datei und die Domänengruppe „Domain Users“ als Gruppe fest:

cephuser@smb > chown "DOMAIN\\demo01:DOMAIN\\domain users" file.txt