Dateien im Netzwerk austauschen, Drucker oder andere Dienste gemeinsam nutzen – und das unabhängig vom Betriebssystem: Die freie Open Source Software-Suite Samba bringt Linux-, Windows- und macOS-Clients unter einen Hut und verwaltet unter anderem Freigaben (engl. Shares) für Benutzer und Gruppen. Seit Version 4 kann Samba zudem die Rolle des Active Directory Domain Controllers übernehmen und damit den Windows-Verzeichnisdienst in einer Domäne ablösen.
Dateifreigaben machen Daten an zentraler Stelle verfügbar – besonders in großen und gemischten Umgebungen mit zahlreichen Rechnern und Tausenden von Benutzerkonten ein echter Vorteil. Admins einer UCS- oder UCS@school-Domäne erstellen Freigaben über die Univention Management Console (UMC); alternativ können sie das Kommandozeilentool univention-directory-manager
auf der Shell verwenden.
Es ist aber auch möglich, das Ganze mit LDAP-Abfragen zu automatisieren. Diese liefern Informationen zu bestehenden Freigaben in einer Domäne, und basierend auf diesen Informationen können Shares dann automatisch eingebunden werden. Das gilt dann auch für Anwendungen, die nicht direkt auf UCS basieren.
In diesem Artikel zeige ich, wie Sie über die UMC und auf der Kommandozeile Samba-Freigaben erstellen. Ich erkläre außerdem, wie Sie den Verzeichnisdienst LDAP befragen, um Details zu Freigaben in Erfahrung zu bringen, und wie Sie diese Angaben dann für eigene Automatismen nutzen.
Inhaltsverzeichnis
UCS: OpenLDAP und Samba 4
Wer in seiner UCS-Umgebung nicht nur Linux-Clients, sondern auch Windows- und/oder macOS-Rechner verwaltet, kann außer dem vorhandenen OpenLDAP-Verzeichnisdienst noch einen zweiten, AD-DS-kompatiblen Verzeichnisdienst einsetzen: Samba 4. In dem Artikel Samba und Active Directory: Zentrale Domänenverwaltung aus dem Mai 2021 erklären wir die Unterschiede zwischen diesen beiden Diensten und zeigen wie Sie beide Lösungen in UCS-Domänen miteinander vereinen. UCS synchronisiert zwischen OpenLDAP mit den von Linux- und Unix-Clients bevorzugten Daten und Samba 4 als Active Directory kompatiblem Service vollautomatisch. So verfügen beide Systeme stets über dieselben Informationen.
Im Rahmen der UCS-Domänen-Replikation können auch Freigaben zentral verwaltet werden. So stehen Shares auf beliebigen Rechnern in der UCS-Domäne zur Verfügung. Die Zugriffsrechte für Benutzer und Gruppen bzw. alle anderen (lesen, schreiben, ausführen) regelt der LDAP-Verzeichnisdienst.
Die zentrale Samba-Einrichtungsdatei ist /etc/samba/smb.conf. Hier ist unter anderem definiert, welche Daten der Server für welche Benutzer freigibt. Zusätzlich kommen auf UCS-Systemen mehrere Dateien im Verzeichnis /etc/samba/shares.conf.d/ zum Einsatz, um Freigaben zu definieren. Die hier liegenden Dateien werden durch ein Listener-Skript erstellt; dasselbe Skript kümmert sich auch um die ACLs, also die Berechtigungen.
Samba-Freigaben über UMC erstellen
Eine komfortable Art, Freigaben zu erstellen und später zu verwalten, ist über das Modul „Domäne / Freigaben“ der Univention Management Console verfügbar.
Hier können Sie Informationen zum Namen der Freigabe, den Server, den absoluten Pfad zum Verzeichnis, das Sie freigeben möchten, den Eigentümer und die Gruppe eintragen. Über Checkboxen definieren Sie die Dateiberechtigungen (Lesen, Schreiben, Zugriff) für den Eigentümer, für Gruppe und alle anderen Nutzer*innen Ihrer Domäne.
In der linken Leiste des UMC-Moduls finden Sie den Eintrag Samba, um den Namen der Freigabe auf Windows-Rechnern in der Netzwerkumgebung, den Schreibzugriff, einen lesenden Zugriff für Gastbenutzer und mehr einzustellen. Eine ausführliche Erklärung zu diesem UMC-Modul und seinen Optionen finden Sie in unserem Handbuch.
Erwähnenswert wäre noch, dass Freigaben in UCS gleichzeitig auch für das Network File System (NFS) bereitgestellt werden können. Das ist vor allem für Unix-basierte Clients interessant. Eine nähere Betrachtung dieses Aspektes sprengt allerdings den Rahmen des Artikels – hier soll es um Samba gehen.
Freigaben über den Univention Directory Manager verwalten
Der Univention Directory Manager (UDM) ist die Kommandozeilen-Schnittstelle zur Univention Management Console. Der UDM bietet dieselben Funktionen wie die Webschnittstelle und eignet sich damit nicht nur für Admins, die lieber Shell-Befehle eingeben, sondern macht auch in Skripten eine gute Figur.
Admins rufen den UDM als Benutzer root über den Befehl univention-directory-manager
(Kurzform udm
) auf. Zusätzlich geben sie ein Modul und eine darauf anwendbare Operation an. Vorhandene UDM-Module werden über den Befehl udm modules
angezeigt, und jedes Modul kennt bis zu fünf Operationen: list
(listet bestehende Objekte auf), create
(legt ein neues Objekt an), modify
(bearbeitet existierende Objekte), remove
(löscht ein Objekt) und move
(verschiebt Objekte an andere Positionen im LDAP-Verzeichnis).
Das folgende Listing zeigt Details zu einer Freigabe. Gut zu erkennen ist, dass alle in der UMC sichtbaren und verwaltbaren Eigenschaften ein Äquivalent im UDM haben:
root@primary:~# udm shares/share list --filter cn=Freigabe1
cn=Freigabe1
DN: cn=Freigabe1,cn=shares,dc=training,dc=ucs
directorymode: 0755
group: 0
host: server-Berlin.training.ucs
name: Freigabe1
owner: 0
path: /data
printablename: Freigabe1 (server-Berlin.training.ucs)
root_squash: 1
sambaBlockSize: None
sambaBlockingLocks: 1
sambaBrowseable: 1
sambaCreateMode: 0744
sambaCscPolicy: manual
sambaDirectoryMode: 0755
sambaDirectorySecurityMode: 0777
sambaDosFilemode: 0
sambaFakeOplocks: 0
sambaForceCreateMode: 00
sambaForceDirectoryMode: 00
sambaForceDirectorySecurityMode: 00
sambaForceGroup: None
sambaForceSecurityMode: 00
sambaForceUser: None
sambaHideFiles: None
sambaHideUnreadable: 0
sambaInheritAcls: 1
sambaInheritOwner: 0
sambaInheritPermissions: 0
sambaInvalidUsers: None
sambaLevel2Oplocks: 1
sambaLocking: 1
sambaMSDFSRoot: 0
sambaName: Freigabe1
sambaNtAclSupport: 1
sambaOplocks: 1
sambaPostexec: None
sambaPreexec: None
sambaPublic: 0
sambaSecurityMode: 0777
sambaStrictLocking: Auto
sambaVFSObjects: None
sambaValidUsers: None
sambaWriteList: None
sambaWriteable: 1
subtree_checking: 1
sync: sync
writeable: 1
Ausgestattet mit der Kenntnis über vorhandene Attribute könnten wir nun einzelne Eigenschaften ändern:
root@primary:~# udm shares/share modify --dn
cn=Freigabe1,cn=shares,dc=training,dc=ucs --set path=/newdata
Object modified: cn=Freigabe1,cn=shares,dc=training,dc=ucs
root@primary:~# udm shares/share list --filter cn=Freigabe1 | grep path
path: /newdata
Mehr Informationen zur Kommandozeilen-Schnittstelle liefert unser Handbuch.
LDAP-Abfragen auf der Kommandozeile
Auch den Verzeichnisdienst können Sie über die Shell ansprechen und dazu das Werkzeug univention-ldapsearch
verwenden. Sie rufen es als Benutzer root auf, denn das Tool greift auf Dateien zu, die aus Sicherheitsgründen nur für die Administrierenden lesbar sind. Es setzt im Hintergrund auf das Werkzeug ldapsearch
und übermittelt die korrekten Angaben zum LDAP-Server, zur -Basis und zur Authentifizierung. So können root-Benutzer auf allen UCS-Rechnern mit dem Account des aktuellen Systems auf den Verzeichnisdienst zugreifen. Als Argument erwartet das Werkzeug einen Suchfilter:
root@dns:~# univention-ldapsearch -LLL "(&(objectClass=univentionShareSamba)
(name=Freigabe1))"
dn: cn=Freigabe1,cn=shares,dc=training,dc=ucs
cn: Freigabe1
univentionShareHost: server-Berlin.training.ucs
univentionShareUid: 0
univentionShareGid: 0
univentionShareDirectoryMode: 0755
univentionShareWriteable: yes
univentionShareNFSSync: sync
univentionShareNFSSubTree: yes
univentionShareNFSRootSquash: yes
univentionShareSambaWriteable: yes
univentionShareSambaName: Freigabe1
univentionShareSambaBrowseable: yes
univentionShareSambaPublic: no
univentionShareSambaDosFilemode: no
univentionShareSambaHideUnreadable: no
univentionShareSambaCreateMode: 0744
univentionShareSambaDirectoryMode: 0755
univentionShareSambaForceCreateMode: 00
univentionShareSambaForceDirectoryMode: 00
univentionShareSambaSecurityMode: 0777
univentionShareSambaDirectorySecurityMode: 0777
univentionShareSambaForceSecurityMode: 00
univentionShareSambaForceDirectorySecurityMode: 00
univentionShareSambaLocking: 1
univentionShareSambaBlockingLocks: 1
univentionShareSambaStrictLocking: Auto
univentionShareSambaOplocks: 1
univentionShareSambaLevel2Oplocks: 1
univentionShareSambaFakeOplocks: 0
univentionShareSambaCscPolicy: manual
univentionShareSambaNtAclSupport: 1
univentionShareSambaInheritAcls: 1
univentionShareSambaMSDFS: no
univentionShareSambaInheritOwner: no
univentionShareSambaInheritPermissions: no
objectClass: univentionShareSamba
objectClass: univentionObject
objectClass: univentionShare
objectClass: univentionShareNFS
objectClass: top
univentionObjectType: shares/share
univentionSharePath: /newdata
Dieses Listing zeigt prinzipiell dieselben, nun aktualisierten Informationen wie der zuvor verwendete udm
-Befehl – allerdings aus Sicht des zur Speicherung verwendeten Verzeichnisdienstes OpenLDAP mit den dort verwendeten etwas abweichenden Namen der Eigenschaften.
Automatisierung
Die Informationen, die eine solche LDAP-Abfrage zurückliefert, können Sie dazu nutzen, Freigaben automatisch einzubinden. Der Artikel UCS@school: Automatisches Einbinden von Samba-Freigaben in Nextcloud zeigt, wie so etwas mit UCS@school und Nextcloud funktioniert. Im Einsatz ist unter anderem der Directory Listener. Er empfängt vom Univention Directory Notifier Benachrichtigungen über Änderungen im Identitätsmanagement-System (IDM) und reagiert darauf. In diesem Beispiel wird immer automatisch eine neue Samba-Freigabe erstellt, wenn es einen neuen Benutzeraccount oder eine neue Klasse/Arbeitsgruppe in UCS@school gibt.
Ähnlich funktioniert das automatische Löschen von Freigaben, wenn ein Account oder eine Gruppe entfernt wird.
Grundsätzlich sind die im LDAP gespeicherten Daten auch von Systemen, die nicht unter UCS laufen, abrufbar. Der Cool Solution Artikel gibt Hinweise, wie Sie diese Aufgabe angehen können.
Fazit
Ich hoffe, dass ich Ihnen mit diesem Artikel einen ersten Eindruck vermitteln konnte, wie Sie mit LDAP-Abfragen Informationen zu Samba-Freigaben in einer Domäne erhalten und diese dann automatisch einbinden können. Falls es noch offene Fragen gibt, nehmen Sie gerne Kontakt zu uns auf oder diskutieren Sie mit uns im Forum.