ubuntuusers.de

Samba create mode / directory mode funktioniert nicht

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.04 (Jaunty Jackalope)
Antworten |

TMuel

Anmeldungsdatum:
24. April 2009

Beiträge: Zähle...

Wohnort: nähe Frankfurt a.M.

Ich habe folgendes Problem mit meinen samba Freigaben:

Ich möchte, dass alle Dateien und Ordner die auf die Freigaben kopiert werden vom entsprechenden User und der Gruppe "users" gelesen und geschrieben werden können. Laut Dokumentation zu samba soll dies durch "create mode" und "directory mode" realisiert werden können, jedoch fuktioniert das bei mir nicht. Ich habe auch schon "create mask" und "directory mask" ausprobiert, jedoch ohne Erfolg.

Wenn ich eine Datei in der Freigabe erstelle oder dort hin kopiere wird zwar die Gruppe auf users gesetzt aber die Zugriffsrechte der Originaldatei werden beibehalten.

Den User der Freigabe zu forcen ist für mich keine lösung denn in meinem Heimnetzwerk bin nicht nur ich tätig und ich würde gerne noch sehen welchem User welche Datei gehört.

Es funktioniert eigentlich alles wie ich will (lesen schreiben etc.) bis auf die Vergabe der Dateirechte.

Könnt Ihr mir bitte helfen? Ich währe dann auch gerne bereit die Erkenntisse ins Wiki einzubinden.

smb.conf auf dem server:

[global]
	workgroup = HOME
	server string = %h
	log file = /var/log/samba/log.%m
	max log size = 1000
	encrypt passwords = true
	security = user
	unix extensions = yes
	wins support = yes
	name resolve order = wins lmhosts hosts bcast

[testfreigabe]
	path = /netshare/testfreigabe
	comment = testfreigabe
	force group = users
	create mode = 0770
	directory mode = 0770
	available = yes
	browseable = yes
	guest ok = no
	writable = no
	write list = @users

[Daten]
	path = /netshare/daten
	comment = Daten
	force group = users
	create mask = 0770
	directory mask = 0770
	browseable = no
	valid users = thomas, denise
	available = yes
	browseable = no
	guest ok = no
	writable = no
	write list = @users

fstab auf dem client:

# <file system>       <mount point>        <type> <options>                                                 <dump>  <pass>
//192.168.2.2/Daten   /home/thomas/Daten   cifs   credentials=/home/thomas/.smbcredentials,iocharset=utf8   0       0

Vielen Dank und liebe Grüsse TMuel

mbecker

Avatar von mbecker

Anmeldungsdatum:
16. September 2007

Beiträge: 643

Wohnort: Hahnheim

Wenn du von einem Linux-Client darauf zugreifst, dann liegt es an den Unix-Extensions. Die einfach ausschalten, dann dürfte es korrekt laufen!

Ich habe das gleiche Problem und ebenfalls noch keine außer der o.a. Lösung gefunden.

TMuel

(Themenstarter)

Anmeldungsdatum:
24. April 2009

Beiträge: 44

Wohnort: nähe Frankfurt a.M.

Ich muss blind gewesen sein !!!

Hallo DragonLord,

ich danke Dir für den Hinweis. Ich muss wohl blind gewesen sein und das nicht nur einmal, denn ich habe den Wikiartikel zur smb.conf mehrmals gelesen und jedes mal den Hinweiskasten unter CIFS Unix Extensions übersehen.

Vielen Dank noch mal für den Wink mit dem Zaunpfahl.

Liebe Grüsse TMuel

TMuel

(Themenstarter)

Anmeldungsdatum:
24. April 2009

Beiträge: 44

Wohnort: nähe Frankfurt a.M.

TMuel schrieb:

Ich muss blind gewesen sein !!!

Hallo DragonLord,

ich danke Dir für den Hinweis. Ich muss wohl blind gewesen sein und das nicht nur einmal, denn ich habe den Wikiartikel zur smb.conf mehrmals gelesen und jedes mal den Hinweiskasten unter CIFS Unix Extensions übersehen.

Vielen Dank noch mal für den Wink mit dem Zaunpfahl.

Liebe Grüsse TMuel

Wenn ich die Unix Extensions auf false/no setze kann ich nicht auf meine Freigaben zugreifen.

Aber vom Gefühl her sind wir warscheinlich schon in der richtigen Richtung unterwegs. Denn so wie ich das verstanden habe ermöglichen ja die Unix Extensions die Übernahme der original Benutzerrechte und des Zeitstempels der, auf der Freigabe, abgelegten Dateien.

mbecker

Avatar von mbecker

Anmeldungsdatum:
16. September 2007

Beiträge: 643

Wohnort: Hahnheim

Hey,

das war kein Wink mit dem Zaunpfahl, wenn das so rüber kam bitte ich um Entschuldigung. Ich kannte den von dir erwähnten Artikel gar nicht.

Versuche doch mal das writeable=no zu entfernen, vielleicht hilft das!

Gruß

Marc

P.S.: Vielleicht hätte ich den auch mal lesen sollen, dann hätte ich mir die wochenlange Fehlersuche ersparen können. 😬

TMuel

(Themenstarter)

Anmeldungsdatum:
24. April 2009

Beiträge: 44

Wohnort: nähe Frankfurt a.M.

Hey Marc, mach Dich locker,

ich denke das, dass mit den Unix Extensions ein sehr guter Hinweis ist. Ich werde noch ein wenig mit den Parametern in dem File experimentieren.

Versuche doch mal das writeable=no zu entfernen, vielleicht hilft das!

Das writeable soll auf no sein weil nicht jeder Schreibzugriff auf die Dateien haben soll sondern nur die die in der writelist sind.

mfg Thomas

mbecker

Avatar von mbecker

Anmeldungsdatum:
16. September 2007

Beiträge: 643

Wohnort: Hahnheim

TMuel schrieb:

Das writeable soll auf no sein weil nicht jeder Schreibzugriff auf die Dateien haben soll sondern nur die die in der writelist sind.

Soweit ich weiß vertragen sich aber write list und writeable=no nicht. Mit writeable=yes/no würdest du für diese Share das Schreiben aller Benutzer erlauben/verbieten. Das writeable ist also nur für die globale Berechtigung aller/keiner Benutzer.

Will man nun nur einer gewissen Gruppe Rechte gewähren muss man "write list" verwenden (afaik).

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

DragonLord schrieb:

TMuel schrieb:

Das writeable soll auf no sein weil nicht jeder Schreibzugriff auf die Dateien haben soll sondern nur die die in der writelist sind.

Soweit ich weiß vertragen sich aber write list und writeable=no nicht. Mit writeable=yes/no würdest du für diese Share das Schreiben aller Benutzer erlauben/verbieten. Das writeable ist also nur für die globale Berechtigung aller/keiner Benutzer.

Will man nun nur einer gewissen Gruppe Rechte gewähren muss man "write list" verwenden (afaik).

Nein, das passt schon, wie TMuel das schreibt. Die write list kann man angeben, um dennoch Schreibzugriff für bestimmte User zu haben, die Manpage sagt dazu:

 write list (S)
             This is a list of users that are given read-write access to a service. If the connecting user is in this
             list  then  they will be given write access, no matter what the read only option is set to.

Und read only ist ja nur die invertierte Option zu writeable.

EDIT:
Zum Problem:
Die Unix Extensions abzuschalten ist eine nicht so gute Variante. Wenn beide Rechner aktuelle Linux-Versionen einsetzen, dann sollte man die aktiv lassen. Wie sind die Rechte auf den Mountpunkt gesetzt?

MfG Dalai

Max-Ulrich_Farber

Avatar von Max-Ulrich_Farber

Anmeldungsdatum:
23. Januar 2007

Beiträge: 8003

Laut Dokumentation zu samba soll dies durch "create mode" und "directory mode" realisiert werden können, jedoch fuktioniert das bei mir nicht. Ich habe auch schon "create mask" und "directory mask" ausprobiert, jedoch ohne Erfolg.

create mode und create mask sind Synonyme. Es ist eine Art Filter, d.h. der Wert wird mit dem ohnehin vorhandenen Modus bitweise "und"-verknüpft. Das heißt, es werden keine neuen Rechte hinzugefügt, sondern nur Rechte eingeschränkt.

Will man Rechte hinzufügen, muss man force create mode = xxx und force directory mode = xxx verwenden. Dann wird der Wert "oder"-verknüpft.

Die UNIX-Extensions würde ich nur dann abschalten, wenn wegen einer Inkompatibilität zwischen Server und Client damit Ungedeih passiert. Sonst ist es immer besser, man lässt sie eingeschaltet (ist deshalb auch Standard).

Wie sind die Rechte auf den Mountpunkt gesetzt?

Die Rechte auf den Mountpunkt spielen nur dafür eine Rolle, ob man mounten kann oder nicht. Nach dem Mounten sind sie völlig von den Rechten der eingehängten Freigabe überdeckt (mit und ohne UNIX-Extensions).

Gruß - Max-Ulrich

TMuel

(Themenstarter)

Anmeldungsdatum:
24. April 2009

Beiträge: 44

Wohnort: nähe Frankfurt a.M.

Max-Ulrich Farber schrieb:

Will man Rechte hinzufügen, muss man force create mode = xxx und force directory mode = xxx verwenden. Dann wird der Wert "oder"-verknüpft.

Ich habe mal alle Möglichkeiten in der Richtung ausprobiert. also mit force create mode = xxx und force directory mode = xxx und so weiter (siehe Code) und nichts hat fuktioniert. Neue Dateien werden stets mit -rw-r--r-- erstellt und Ordner mit drwxrwx-–.

[global]
	workgroup = HOME
	server string = %h
	log file = /var/log/samba/log.%m
	max log size = 1000
	encrypt passwords = true
	security = user
	unix extensions = yes
	wins support = yes
	name resolve order = wins lmhosts hosts bcast

[testfreigabe]
	path = /netshare/testfreigabe
	comment = testfreigabe
	force group = users
#	force create mode = 0770
#	force directory mode = 0770
#	create mode = 0770
#	directory mode = 0770
	create mask = 0770
	directory mask = 0770
#	force create mode = 100770
#	force directory mode = 40770
#	create mode = 100770
#	directory mode = 40770
#	create mask = 100770
#	directory mask = 40770
	valid users = thomas, denise
	available = yes
	browseable = yes
	guest ok = no
	writable = no
	write list = @users

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Wenn die Unix Extensions aktiv sind, bleiben die create/directory modes vollkommen außen vor. Die Rechte (vor allem die für neue Dateien) auf dem Client spielen dann eine Rolle.

MfG Dalai

Max-Ulrich_Farber

Avatar von Max-Ulrich_Farber

Anmeldungsdatum:
23. Januar 2007

Beiträge: 8003

Das ist richtig. Da muss man dann auf dem Server den Befehl umask verwenden.

Der Befehl umask ohne Parameter gibt die gültigen Einstellungen aus; mit Parameter legt er neue Einstellungen fest. Die Werte sind als negative Maske (von 0666 bzw. 0777 zu subtrahieren) zu verstehen:

umask 0022

bewirkt das Entsprechende zu

create mode = 0644
directory mode = 0755

Standardmäßig gilt umask immer systemweit; man kann es AFAIK auch auf einen User beschränken; ich weiß aber nicht mehr, wie das geht.

Gruß - Max-Ulrich

Antworten |