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.
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 #
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“.
Vergewissern Sie sich, dass sich in Ihrem Cluster bereits ein funktionierendes CephFS befindet.
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.keyringcephuser@adm >
scp
ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/Ersetzen Sie SAMBA_NODE durch den Namen des Samba-Gateway-Knotens.
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-cephErsetzen 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: Oplocks und Freigabemodioplocks
(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: Zulassen des ZugriffsSamba 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 USERNAMEFü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
odersetfacl
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
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 #
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/.
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.keyringcephuser@adm >
scp
ceph.client.samba.gw.keyringearth
:/etc/ceph/cephuser@adm >
scp
ceph.client.samba.gw.keyringmars
:/etc/ceph/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 mitrbd
(weitere Informationen finden Sie in Abschnitt 18.5.1, „Verknüpfen von Pools mit einer Anwendung“). Erstellen Sie dann ein entsprechendes RBD-Image namenssbd01
:cephuser@adm >
ceph osd pool create rbdcephuser@adm >
ceph osd pool application enable rbd rbdcephuser@adm >
rbd -p rbd create sbd01 --size 64M --image-sharedBereiten Sie
earth
undmars
darauf vor, den Samba Service zu hosten:Vergewissern Sie sich, dass die folgenden Pakete installiert sind, bevor Sie fortfahren: ctdb, tdb-tools und samba.
#
zypper
in ctdb tdb-tools samba samba-cephStellen 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Öffnen Sie Port
4379
Ihrer Firewall in allen Knoten. Dies ist erforderlich, damit CTDB mit anderen Cluster-Knoten kommunizieren kann.
Erstellen Sie die Konfigurationsdateien für Samba in
earth
. Diese werden später automatisch mitmars
synchronisiert.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
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.
Installieren Sie den SUSE Linux Enterprise High Availability Cluster und führen Sie ein Bootstrap durch.
Registrieren Sie die SUSE Linux Enterprise High Availability Extension auf den Knoten
earth
undmars
:root@earth #
SUSEConnect
-r ACTIVATION_CODE -e E_MAILroot@mars #
SUSEConnect
-r ACTIVATION_CODE -e E_MAILInstallieren Sie ha-cluster-bootstrap auf beiden Knoten:
root@earth #
zypper
in ha-cluster-bootstraproot@mars #
zypper
in ha-cluster-bootstrapOrdnen Sie das RBD-Image
sbd01
auf beiden Samba-Gateways überrbdmap.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.serviceroot@mars #
systemctl enable rbdmap.service && systemctl start rbdmap.serviceDas Gerät
/dev/rbd/rbd/sbd01
sollte auf beiden Samba-Gateways verfügbar sein.Initialisieren Sie den Cluster auf
earth
und nehmen Siemars
darin auf.root@earth #
ha-cluster-init
root@mars #
ha-cluster-join
-c earthWichtigWä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.
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 earthFühren Sie die folgenden Kommandos in
earth
aus, um die CTDB-Ressource zu konfigurieren:root@earth #
crm
configurecrm(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 smbcrm(live)configure#
clone
cl-ctdb g-ctdb meta interleave="true"crm(live)configure#
commit
Tipp: Optionalenmb
- undwinbind
-PrimitiveWenn 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 Konfigurationsoptionctdb_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.
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-ctdbcrm(live)configure#
order
o-with-ctdb 0: cl-ip cl-ctdbcrm(live)configure#
commit
Wenn
unique_clone_address
auftrue
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.Ü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-1Testen 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.
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
/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.
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.
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:
IDs | Bereich |
---|---|
0-999 | Lokale Systembenutzer und -gruppen. |
Ab 1.000 | Lokale UNIX-Benutzer und -Gruppen. |
Ab 10.000 | DOMAIN-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:
Domäne | Bereich |
---|---|
* | 3000-7999 |
DOMAIN | 10000-999999 |
TRUSTED | 1000000-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.
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:
Tragen Sie den folgenden Parameter im Abschnitt
[global]
der Dateismb.conf
ein:username map = /etc/samba/user.map
Erstellen Sie die Datei
/etc/samba/user.map
mit folgendem Inhalt:!root = DOMAIN\Administrator
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
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 denwinbind
-Dienst erfolgt.Nehmen Sie den Eintrag
winbind
nicht in die NSS-Shadow
-Datenbank auf. Dies kann dazu führen, dass daswbinfo
-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