SAMBA+ Container nutzen

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.

Aktivieren Sie Ihren im SAMBA+ Shop erworbenen Subskriptionsschlüssel (siehe SAMBA+ kaufen) im OPOSSO-Subskriptionsportal und setzen Sie ein Passwort (siehe auch Abonnement aktivieren).

Als nächstes laden Sie bitte das csmb-Wrapper-Skript hier herunter:
https://$SUBSCRIPTIONKEY:$PASSWORD@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 $PASSWORD

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!

 

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"

 

Deutsch English Français