Beispiel Samba Konfiguration im User Modus

Die folgende Konfiguration ist ein Beispiel für einen Samba-Server im User Modus. Wir werden ein paar Features einbauen, die die Mechanismen klären, die hier eine Rolle spielen. Die Konfiguration wird mit verschlüsselten Passwörtern arbeiten, also für Windows-Rechner ab Windows 98 bis zu aktuellen Windows Version geeignet sein.

Die smb.conf Datei

[global] 
security = user 
workgroup = ARBEITSGRUPPE 
printing = bsd 
guest account = nobody 
encrypted passwords = Yes 
wins support = Yes 

[homes] 
comment = Home Directories 
browseable = no 
read only = no 
create mode = 0750 

[printers] 
comment = All Printers 
browseable = no 
printable = yes 
public = no 
writable = no 
create mode = 0700 

[hansprn] 
comment = Der Drucker nur fuer Hans 
valid users = hans 
path = /home/hans 
printer = lp 
public = no 
writable = no 
printable = yes 

[hansdir] 
comment = Hans Verzeichnis 
path = /usr/Daten/hans 
valid users = hans 
public = no 
writable = yes 
printable = no 

[hansotto] 
comment = Verzeichnis von Otto und Hans 
path = /usr/Daten/OH 
valid users = otto hans 
public = no 
writable = yes 
printable = no 
create mask = 0765 

[public1] 
comment = Public Stuff 
path = /usr/Daten/p 
public = yes 
writable = no 
printable = no 
write list = @sambauser 

[public2] 
path = /usr/Daten/p2 
public = yes 
only guest = yes 
guest account = hans 
writable = yes 
printable = no 

[pchome] 
comment = PC Directories 
path = /usr/Daten/pc/%m public = no 
writeable = yes

Die [gobal]-Sektion

Diese Sektion enthält hier eigentlich nur eine Neuerung, die Angabe

security = user

Damit schalten wir die Sicherheit auf User-Level und zwingen somit jeden Windows-Benutzer, sich zuerst mit Usernamen und Passwort „anzumelden“. Wir hätten diese Angabe auch ganz weglassen dürfen, denn ab Samba 2.0 ist der User-Level die vor eingestellte Sicherheitsstufe. Anstatt User kann auch die Security Mode = Domain eingestellt werden. Somit wird der Samba Mitglied in einer Windows Domäne.

wins support = yes

[printers] und [homes]

Diese beiden Sektionen haben keinerlei neue Einstellungen erfahren, sie arbeiten unter der userbasierten Sicherheitsstufe genauso wie in der freigabebasierten.

Der private Drucker: [hansprn]

Der Abschnitt [hansprn] enthält die Angaben für einen Drucker, den nur hans benutzen darf. Diese Einstellung wird dadurch möglich, dass die Anweisungen.

valid users = hans 
public = No

eingefügt werden. Die Anweisung public = No heißt einfach, dass dieser share nicht öffentlich ist, wir hätten genauso schreiben können guest account = no. „public“ und „guest account“ sind Synonyme.

Die wichtige Einstellung wird mit valid users = hans vorgenommen. Durch diese Einstellung bekommt nur der User hans das Recht, den share zu benutzen, auch wenn alle anderen User ihn angezeigt bekommen.

Ein Verzeichnis nur für einen User: [hansdir]

Wie schon beim Drucker hansprn, so können wir mit valid users auch einem Verzeichnis klarmachen, dass nur der User darauf zugriff hat, der unter valid users genannt ist. Jeder andere User bekommt das Verzeichnis zwar zu sehen, sobald er es aber öffnen will, wird er nach einem Passwort gefragt:

passwort abfrage samba
Passwort Abfrage – samba

Selbst wenn er das Passwort von hans wissen würde, hat er keinerlei Zugriff, denn sein Username ist ja nun einmal nicht hans…

Zu beachten ist hier wieder die Tatsache, dass der User hans auch unter Linux die gewünschten Rechte auf das entsprechende Verzeichnis haben muß.

Ein Verzeichnis für mehrere User: [hansotto]

Die Anweisung valid users kann auch dazu benutzt werden, einer bestimmten Menge von Usern Zugriff auf ein Verzeichnis zu geben. In diesem Abschnitt hatten wir geschrieben:

valid users = otto hans

Das heißt, sowohl otto, als auch hans dürfen auf dieses Verzeichnis zugreifen. Es ist auch hier natürlich notwendig, dass unter Linux entsprechende Rechte für die beiden User existieren.

Ein öffentliches Verzeichnis, beschreibbar nur von einer Unix-Gruppe: [public1]

Im nächsten Abschnitt definieren wir eine ganz spezielle Technik. Der share [public1] ist für alle zugänglich, aber nur ReadOnly. Alle Mitglieder der Gruppe sambauser haben jedoch Schreibrechte auf diesen share. Das wird durch die folgende Anweisung erreicht:

write list = @sambauser

Durch den vorgestellten Klammeraffen erkennt Samba den Begriff sambauser als Unix-Gruppennamen. Mitglieder dieser Gruppe sind also schreibberechtigt, obwohl der share als ReadOnly freigegeben wurde. Das muß natürlich wiederum auf der Linux-Seite genauso freigegeben werden, etwa:

drwxrwxr-x 2 root sambauser 1024 May 30 13:09 /usr/Daten/p

Eine ganz raffinierte Möglichkeit steht uns so zur Verfügung, wenn wir auf der Unix-Seite dem Verzeichnis das Recht 770 verpassen, also dem Rest der Welt keine Rechte geben:

drwxrwx--- 2 root sambauser 1024 May 30 13:09 /usr/Daten/p

Wenn ein Mitglied der Gruppe sambauser jetzt auf das Verzeichnis zugreift, bekommt er vollen Zugriff, inklusive Schreibrecht: wi

Versucht jedoch ein User, der nicht Mitglied der Gruppe sambauser ist, auf den share zuzugreifen, so bekommt er eine Fehlermeldung:

Bild fehlt noch

Fehlermeldung Samba - Kann nicht zugeriffen werden
Fehlermeldung Samba – Kann nicht zugegriffen werden

Samba konnte ja nicht zugreifen, denn unter der UserID von (in unserem Beispiel) efka, der nicht Mitglied der Gruppe sambauser ist, ist kein Zugriff möglich (—).

Ein beschreibbares Verzeichnis für alle: [public2]

Das nächste Beispiel zeigt ein Verzeichnis, das von allen beschreibbar ist. Allerdings sind hier zwei neue Eigenschaften, die sich genau darum drehen:

only guest = yes 
guest account = hans 
writable = yes

Wir legen mit der ersten Anweisung fest, dass dieses Verzeichnis nur für Gäste zugreifbar ist, legen aber dann in der zweiten Zeile fest, dass der Gastaccount der User hans ist. Das heißt, dass hier jeder User schreiben kann, er aber immer nur unter der UserID von hans schreibt. Das Verzeichnis muß also Linux-seitig nur das Schreibrecht für hans besitzen.

Für jeden Windows-Rechner ein eigenes Verzeichnis: [pchome]

Im Abschnitt [pchome] nutzen wir die Variablensubstitution von Samba, um jedem Windows-Rechner ein eigenes Verzeichnis zuzuweisen, unabhängig vom jeweiligen Benutzer. Die Anweisung

path = /usr/Daten/pc/%m

legt den Pfad für das freizugebende Verzeichnis fest. Die Konstruktion %m wird durch den NetBIOS-Namen des Windows-Rechners ersetzt, der die Anfrage stellt. Heißt also ein Windows-Rechner WS1, so wird das Verzeichnis /usr/Daten/pc/WS1 freigegeben, heißt ein anderer Windows-Rechner beispielsweise aber GOLEM, so sucht Samba hier nach /usr/Daten/pc/GOLEM.

Hätten wir statt %m z.B. ein %u benutzt, so hätten wir auch ein Verzeichnis für jeden User anbieten können…

Dieser Beitrag hat 4 Kommentare

  1. Wolfgang

    Danke. Gut erklärt

  2. Pater Papnase

    Bitte den ganzen Artikel nochmal prüfen: aus sambauser wird plötzlich samabuse
    Danke

    1. tagol

      Danke für den Hinweis. Ist gefixt!

Schreibe einen Kommentar