SAMBA+ Container nutzen
>> SAMBA+ Container einkaufen
>> Erste Schritte mit dem SAMBA+ Container (Anleitungen)
>> Standard-Administrationskonto
>> Dateifreigaben und ACLs
>> Standalone-Server
>> Member-Server
>> Update des Containers
>> Netzwerk-Konfiguration
>> Umgebungs-Variablen
SAMBA+ Container kaufen
SAMBA+ Container-Abonnements können unter https://shop.samba.plus (Währung EUR) oder https://usdshop.samba.plus (Währung USD) erworben werden. Im Lizenzbereich deines Benutzerkontos im Shop siehst du den erworbenen Abonnementschlüssel, den du brauchst, um die SAMBA+ Container-Images und die erforderlichen Skripte abzurufen. Das Passwort lautet immer "sambaplus".
Erste Schritte mit dem SAMBA+ Container
Zuallererst benötigen Sie ein System, auf dem Docker / Podman als Host läuft. Wechseln Sie auf dieses System und beginnen Sie dort mit der Einrichtung des SAMBA+ Containers.
Als nächstes laden Sie bitte das csmb-Wrapper-Skript hier herunter:
https://$SUBSCRIPTIONKEY:sambaplus@download.samba.plus/subscriptions/samba-container/csmb
Danach müssen die Zugangsdaten gespeichert werden über:
$ chmod u+x csmb
$ sudo ./csmb login --key $SUBSCRIPTIONKEY --password sambaplus
Danach überlegen Sie bitte, wo Sie die persistenten Daten des Containers ablegen wollen und übergeben den Pfad an die csmb-Option "--state-directory". Wenn das Verzeichnis nicht existiert, legt csmb es an.
Die persistenten Samba-Daten wie TDB-Datenbanken werden im State-Verzeichnis gespeichert. Stellen Sie sicher, dass Sie die TDB-Dateien regelmäßig dumpen und zu Ihrem Backup hinzufügen.
Der Pfad zu den Samba-Freigaben (csmb-Option "--shares-directory") wird von csmb erstellt, wenn es nicht beendet wird.
Wenn Sie mehr als einen Container betreiben, stellen Sie sicher, dass Sie deren Statusverzeichnisse trennen!
Disclaimer
Die hier zum Download angebotene Software ist Open Source und Freie Software, die unter der GNU General Public License (GPL) Version 3 oder höher lizenziert ist. Sie wird angeboten, wie sie ist, ohne jegliche Garantie unter den Bedingungen der GPL. Weitere Einzelheiten finden Sie auf den Homepages der GNU General Public License und der Free Software Foundation.
Standard-Administrationskonto
csmb erstellt ein Benutzerkonto "csmbadmin" das zur Verwaltung des Servers, insbesondere der Dateiberechtigungen (siehe unten), verwendet werden kann. Das Passwort für das Konto wird entweder der csmb-Option "--csmbadmin-password" entnommen oder beim Anlegen eines Containers interaktiv von der Kommandozeile gelesen.
Dateifreigaben und Zugriffssteuerungslisten (ACLs)
Alle Freigaben werden als Unterverzeichnisse des --shares-directory konfiguriert.
Beispiel:
Bei der Erstellung eines Containers mit
--shares-directory /data/storage/samba/shares
--shares "share1;share2"
Die resultierende Verzeichnisstruktur ist:
host# ls -l /data/storage/samba/shares
total 8
drwxr-xr-x. 2 root root 4096 Jun 1 11:23 share1
drwxr-xr-x. 2 root root 4096 Jun 1 11:23 share2
Im Container sieht die resultierende Konfiguration wie folgt aus:
Container# net conf list | tail -10
[share1]
path = /srv/samba/shares/share1
guest ok = no
read only = no
[share2]
Pfad = /srv/samba/shares/share2
guest ok = no
read only = no
Der Dateiserver ist so konfiguriert, dass er das "acl_xattr" VFS-Objekt verwendet, um die Verwendung von vollständigen Windows-Zugriffssteuerungslisten (Access Control List / ACL), auf dem Server zu ermöglichen. Um Berechtigungen zu konfigurieren, ist es am bequemsten, sich entweder als "csmbadmin"-Benutzer oder im Falle eines Mitgliedsservers als Mitglied der Gruppe der Domänenadministration mit dem Dateiserver zu verbinden und die Berechtigungen auf der Registerkarte "Sicherheit" im Windows Explorer zu konfigurieren.
Standalone-Server
Sie brauchen die SerNet SAMBA+ Repositories in Ihrem Container nicht zu konfigurieren, Sie laden einfach "csmb" herunter und führen den folgenden Befehl aus:
$ sudo ./csmb create standalone $CONTAINERNAME \
--state-directory $STATEDIR \
--shares-directory /path/to/your/shares \
--dns-server $DNS \
--listen $IP \
--workgroup $WORKGROUP \
--shares "$SHARE1;$SHARE2" \
--users "$USER1%$PWD;$USER2%$PWD"
Member-Server
$ sudo ./csmb create member $CONTAINERNAME \
--state-directory $STATEDIR \
--shares-directory /path/to/your/shares \
--dns-server $IPDC \
--listen $IP \
--workgroup $WORKGROUP \
--realm $REALM \
--shares "$SHARE1;$SHARE2" \
--join-user "Administrator" \
--join-passwd "Passw0rd"
Das Join-Passwort wird vorübergehend in einer Datei gespeichert, aber die Datei wird aus Sicherheitsgründen nach dem Join wieder entfernt.
Statusverzeichnis und Freigabeverzeichnis sind lokale Verzeichnisse auf dem Host, die über einen Bind-Mount in den Container exportiert werden. Diese sind sehr wichtig, da hier persistente Daten gespeichert werden. Bitte achten Sie darauf, diese Verzeichnisse in Ihr Backup einzubeziehen (es ist sinnvoll, die Samba-Dienste zu stoppen, bevor tdb-Dateien kopiert werden).
Weitere Konfigurationen können Sie vornehmen, indem Sie den Container betreten mit:
$ sudo ./csmb enter $CONTAINERNAME
und anschließend den Samba-Befehl 'net conf' verwenden.
Dieser Container ist nicht dafür gemacht, einen Active Directory Domain Controller zu betreiben (es wird wahrscheinlich bald einen eigenen Container für AD DCs geben). Auch Print Serving wird derzeit nicht unterstützt
Update des Containers
Um den Container inklusive Samba zu aktualisieren, verwenden Sie bitte den csmb-Befehl "update"
Beispiel:
$ sudo ./csmb update standalone $CONTAINERNAME \
--state-directory $STATEDIR \
--shares-directory /path/to/your/shares \
--dns-server $DNS \
--listen $IP \
--workgroup $WORKGROUP \
--shares "$SHARE1;$SHARE2" \
--users "$USER1%$PWD;$USER2%$PWD"
Da dies im Grunde den Container neu erstellt, müssen Sie den kompletten Satz an Optionen übergeben, der beim Erstellen des Containers verwendet wurde. Die Verwendung von csmb "update" hat den Vorteil der einfachen Handhabung, da es auch die folgenden Schritte durchführt:
- den vorhandenen Container stoppen
- Umbenennen des vorhandenen Containers in CONTAINERNAME-DATE (wobei DATE im Format YYYYMMDD-HHMMSS vorliegt)
- Erzeugen des neuen Containers
Für den Fall, dass der neue Container nicht voll funktionsfähig ist, können Sie den alten Container starten, indem Sie Folgendes ausführen:
$ sudo ./csmb stop CONTAINERNAME
$ sudo ./csmb start CONTAINERNAME-DATE
Netzwerk-Konfiguration
csmb unterstützt beide Standardwege, um Container-Netzwerke einzurichten: NATed und bridged.
NAT
Um eine IP auf dem Host zu spezifizieren, auf dem der Container läuft, verwenden Sie die csmb-Option --listen.
Beispiel:
# csmb ... --listen 192.168.1.2
Die Container-Laufzeit wird eine Portweiterleitung für Port 445 auf dem Container einrichten. Der Container wird den Dienst nur auf der angegebenen IP-Adresse bereitstellen.
Bridged
Um Bridge-Netzwerke zu unterstützen, bietet csmb die Optionen --network und --ip um das Containernetzwerk, an das der Container angeschlossen wird, und seine IP-Adresse zu spezifizieren.
Typischerweise werden Sie eine dedizierte Netzwerkschnittstelle des Hosts nit dem Bridge-Gerät verknüpfen, das mit dem Container-Netzwerk verbunden ist.
Um die Host-Netzwerk-Bridge zu finden, die mit einem Container-Netzwerk verbunden ist, können Sie den Befehl 'docker network inspect' verwenden, um die Id des Netzwerks abzurufen:
$ sudo docker network inspect NETWORK_NAME | jq '.[0].Id'
"a796598154d6ac14be8818c9abc6002b9cdd91fc5f0352edf6bbb7b418429841"
Die Container-Laufzeit verwendet diese Id standardmäßig für den Bridge-Namen, z. B.:
$ sudo brctl show | grep a796598154d6
br-a796598154d6 8000.0242bd8a10d3 no
Um eine Host-Schnittstelle mit der Bridge zu verbinden, verwenden Sie den 'ip link' Befehl:
$ sudo ip link set dev HOST_INTERFACE master BRIDGE
Beispiel:
$ sudo ip link set dev ens1 master br-a796598154d6
Schließlich können Sie eine IP auf dem Bridge-Port des Hosts setzen
$ sudo ip a add IP/NETMASK dev BRIDGE
Beispiel:
$ sudo ip a add 192.168.2.2/24 dev br-a796598154d6
Beachten Sie, dass die resultierende Netzwerkkonfiguration aus den IP-Befehlen bei Systemneustarts nicht bestehen bleibt. Um diese Konfiguration permanent zu machen, konsultieren Sie bitte die Netzwerkdokumentation Ihres Systems.
Umgebungs-Variablen
Wenn Sie das "csmb"-Skript nicht verwenden möchten, können Sie natürlich auch den einfachen Container verwenden, indem Sie die folgenden Umgebungsvariablen nach Bedarf setzen:
Erforderlich:
SAMBA_SERVERNAME ... Der Name des Servers
SAMBA_DNSSERVER ... DNS-Server, der innerhalb des Containers verwendet werden soll
Für Standalone-Server:
SAMBA_DOMAIN ... Die Windows-Arbeitsgruppe für den Container
Für AD-Mitgliedsserver:
SAMBA_WORKGROUP ... Die Windows-Arbeitsgruppe für den Container
SAMBA_REALM ... Der Active-Directory-Realm
SAMBA_JOIN_USER ... Der Name des Benutzers, der für den Beitritt zur Domäne verwendet wird
Das Join-Passwort wird aus der Datei /var/lib/samba/join.pass innerhalb des Containers gelesen. Die Passwortdatei wird nach dem Join gelöscht.
Optional:
SAMBA_SHARES ... Liste der bereitzustellenden Freigaben, getrennt durch ";",
z.B. SAMBA_SHARES="share1;share2"
SAMBA_USERS ... Liste der zu provisionierenden Benutzer, getrennt durch ";",
z.B. SAMBA_USERS="user1%pass1;user2%pass2"