Eine Samba-Freigabe unter Unix einrichten...das kann schnell gehen, man kann damit aber auch einen Arbeitstag verbraten.
In meinem Fall war die Samba-Freigabe an sich recht schnell eingerichtet, das Ergebnis der von anderen Computern rüberkopierten Daten allerdings weitab von dem, was ich mir gewünscht hatte: Alle Dateien, die ich von einem Mac-Rechner über das Netzwerk auf den Unix-Server kopiert hatten, hatten auf dem Unix-Server – egal, was man machte – die Berechtigung 644.
Im Folgenden ein paar Erkenntnisse, die ich über Samba gesammelt hatte. Wer sich auch schon mit
create mode,
create mask,
force create mode & Co abgemüht hat, sich ganz sicher ist, dass er weiß, was er hier tat und trotzdem auf dem Unix-Server Dateien mit "falscher" Berechtigung hat, möge gleich zur Erkenntnis Nummer 4 "unix extensions" scrollen.
Szenario
Ich habe einen Ordner /tmp/freigabe auf einem Unix-Server, den ich im Netzwerk für PCs und Macs freigeben möchte.Der Benutzer auf dem Unix-Server, der auch die meisten Dienste ausführt, lautet xdaemon.
Erkenntnis 1: Gruppenzugehörigkeit des freigegebenen Ordners
Wenn ich den "sticky bit" setze, werden alle auf die Freigabe kopierten Dateien derselben Gruppe angehören, wie der freigegebene Ordner selbst:chmod g+s /tmp/freigabe
Das s in
drwxrws---ist hierbei dieses "sticky bit". Alle hier per SMB erstellten Dateien werden der Gruppe users angehören.
Erkenntnis 2: Gastzugang
Um einen Gastzugang zu gewähren, also dass auch Benutzer ohne Eingabe von Benutzernamen und Passwort die Freigabe mounten können, müssen folgende Einstellungen in der/etc/samba/smb.confgetätigt werden (im Folgenden nur die hinzuzufügenden Zeilen unter
[global]und
[freigabe]).
guest account = xdaemon
[freigabe]
public = yes
guest ok = yes
force user = xdaemon
Wobei
force userden Benutzer-Account angibt, welchem die via Gastzugang kopierten Daten später gehören.
Erkenntnis 3: Dateiberechtigungen
Komplizierter, als man dachte. Folgende Einstellungen können je Share definiert werden, wobei einige in neueren Samba-Versionen nicht mehr vorkommen, einige für die höchstmögliche und einige für die mindeste Berechtigung stehen.Keine Einstellung steht für "auf diese Freigabe kopierte Dateien werden folgende Dateirechte bekommen".
Ein
create mode = 0660Â bedeutet also nicht zwingend, dass auf die Freigabe kopierte Dateien nachher die Dateiberechtigung
rw-rw----erhalten.
Keine der Anweisungen erzwingt für sich bestimmte Rechte. Auch nicht die mit einem "force" im Namen.
Und auf Anweisungen mit einem "security" im Namen verzichtet man besser komplett, da diese spätestens ab Samba 4 nicht mehr beachtet werden.
create mask ! Maximal mögliches Recht
create mode Alias zu 'create mask'
force create mode ! Minimal mögliches Recht
security mask Ab Samba 4 entfernt
force security mode Ab Samba 4 entfernt
VERZEICHNISSE
directory mask ! Maximal mögliches Recht
directory mode Alias zu 'directory mask'
force directory mode ! Minimal mögliches Recht
directory security mask Ab Samba 4 entfernt
force directory security mode Ab Samba 4 entfernt
Wichtig sind also eigentlich nur die vier mit ! markierten Anweisungen.
Um mit ihnen zu definieren, dass auf die Freigabe kopierte Dateien und Verzeichnisse immer die Berechtigung 660
rw-rw----haben, wären folgende vier Zeilen in der Konfiguration notwendig:
create mode = 0660
force create mode = 0660
directory mask = 0660
force directory mode = 0660
Erkenntnis 4: unix extensions
So sehr ich mich auch mit den Dateiberechtigungen rumgeschlagen hatte – man findet im Internet ja die verschiedensten Tipps, welche Kombinationen man verwenden soll – hatte ich immer das Problem, dass Dateien, die ich von einem Windows-PC rüber kopierte genau die Berechtigungen hatten, die ich auch haben wollte (für Windows ungewöhnlich) und Dateien, die ich von einem Mac aus kopierte nicht (deren unsichtbarer Resource-Teil war allerdings schon etwas näher dran).Laut smb.conf sollten alle Dateien die Berechtigung 660
rw-rw----haben.
So sah es allerdings auf der Freigabe tatsächlich aus:
-rw-r--r-- 1 xdaemon users 43230 Jun 10 15:03 macfile.txt
-rw-rw---- 1 xdaemon users 43230 Jun 10 15:03 winfile.txt
Abhilfe brachte hier nur die globale smb.conf-Einstellung
unix extensions = no
Durch das de-aktivieren mit
nowerden dann zwar keine symbolischen links und hard links mehr unterstützt, aber immerhin haben nun auch vom Mac aus kopierte Dateien genau die Dateiberechtigung, die man mit Hilfe von
create modeund
force create modein der Konfiguration angegeben hatte.
unix extensions = no
Erkenntnis 5: Dateimüll
Je Freigabe kann man Dateien an Hand ihres Dateinamens ablehnen, um Dateimüll, wie die .DS_Store-Dateien des Macs oder die Thumbs.db-Dateien von Windows auf der Freigabe zu vermeiden.Ich hatte auch versucht, sämtliche Mac-Resource-Dateien (Dateien, die mit einem ._ beginnen) abzulehnen, was dann allerdings am Mac bei Kopiervorgängen immer zu einer Fehlermeldung führt, dass nicht alle Daten kopiert werden konnten.
Alle abzulehnenden Dateinahmen sollten Zwischen einem / stehen, Der * Wildcard ist auch möglich.
veto files = /.DS_Store/._.DS_Store/.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/Thumbs.db/
delete veto files = yes
![]() ![]() ![]() ![]() |
|
Erstellt am: 10.06.2016 unter den Kategorien Grundlagen . | Kommentieren |