(force) create mode greift erst nach Bearbeiten der Rechte vom Client aus

N

Nudelgott

Grünschnabel
Hallo alle zusammen,

ich betreue einen kleinen Server und neuerdings ist dort auch eine Samba-Freigabe eingerichtet. Es geht dabei nur um die Ablage einiger Dateien, also reiner Fileserver.

Ich habe in der smb.conf mittels create mask usw. die Rechte eingestellt, die neue Dateien und Verzeichnisse gezwungenermaßen bekommen sollen.
Wenn ich nun einen Client (WinXP SP3) verbinde, etwas Neues anlege und mir die Rechte auf dem Server anschaue, dann stimmen die vorn und hinten nicht. Bspw. bekommen Verzeichnisse immer 700, obwohl sie 775 haben sollten. Dateien bekommen 620 statt 664.
Wenn ich dann aber die Zugriffsrechte vom Windows-Client aus bearbeite (Eigenschaften -> Sicherheitseinstellungen), wobei es egal ist, was ich da einstelle, setzt Samba die Rechte der Datei/des Verzeichnisses auf einmal auf die voreingestellten Werte. Diese lassen sich dann auch nicht mehr vom Client aus ändern.

Hat irgendjemand eine Idee, wie man Samba dazu bringen kann, die Rechte gleich richtig zu setzen?

Hier meine Daten:

Samba-Server:
OpenSUSE 11.1
Kernel 2.6.27.45-0.1-pae
Samba 3.5.4-1.1-2382-SUSE-CODE11

Client:
Windows XP Prof. SP3

smb.conf
Code:
[global]
	server string = samba %h
	workgroup = MNS_SVR1
	printing = cups
	printcap name = cups
	printcap cache time = 750
	cups options = raw
	map to guest = Bad User
	logon path = \\%L\profiles\.msprofile
	logon home = \\%L\%U\.9xprofile
	logon drive = P:
	usershare allow guests = No
	add machine script = /usr/sbin/useradd  -c Machine -d /var/lib/nobody -s /bin/false %m$
	local master = Yes
	netbios name = MNSSVR1
	os level = 65
	passdb backend = tdbsam
	security = user
	pam password change = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *new*password* %n\n *new*password* %n\n *Password\schanged*
	passwd chat debug = Yes
	passwd chat timeout = 4
	unix password sync = Yes
	invalid users = root @wheel
	obey pam restrictions = Yes

[citavi]
	comment = DB for Citavi knowledge management system
	browseable = Yes
	writable = Yes
	path = /daten/samba-shares/citavi
	read only = No
	valid users = @citavi-access
	read list = @citavi-access
	write list = @citavi-write-access
	security mask = 0664
	force security mode = 0664
	create mask = 0664
	force create mode = 0664
	directory mask = 0775
	force directory mode = 0775
	directory security mask = 0775
	force directory security mode = 0775
	force group = citavi-write-access
	#  die folgenden Sachen wurden ohne Erfolg getestet
	#acl group control = Yes
	#acl map full control = No	
	#acl check permissions = No	
	#inherit acls = Yes
	#inherit permissions = Yes
	#dos filemode = Yes

Nur nochmal zum Verständnis der beispielhafte Ablauf:
  • Netzlaufwerk verbinden als hans-wurst
  • Vom Client aus eine Datei auf dem Share anlegen: test.txt.
    ls -l auf dem Server sagt: -rw--w---- 1 hans-wurst citavi-write-access ... test.txt
    Sollte aber sein: -rw-rw-r-- (siehe smb.conf)
  • Rechte vom Client aus bearbeiten. Ich gebe allen vollen Zugriff (aufgeführt sind der verbundene User hans-wurst, die forced group citavi-write-access und das obligatorische Jeder). Alternativ könnte ich auch alle löschen, das macht keinen Unterschied.
  • ls -l sagt jetzt: -rw-rw-r-- 1 hans-wurst citavi-write-access ... test.txt, also so, wie es in der smb.conf definiert wurde.
 
Nehme mal alles an Configs raus, was die file-permissions betrifft, außer

Code:
create mode = 0644
directory mode = 0775

Dann erstelle vom Client aus eine neue Datei.
Wie sind die Rechte der Datei?
 
Hallo NoXqs,

danke für deine Antwort.

Die vorgeschlagene Anpassung der smb.conf bewirkt keinerlei Änderung. Eine neu erstellte Datei bekommt immer noch 620 statt 664. Bei einer create mask von 0644 bekommt die neue Datei 0600. Nach einmaliger Bearbeitung der Sicherheitseinstellungen vom Client aus stimmen die Rechte dann wieder mit der create mask überein.

smb.conf jetzt:
Code:
[global]
	server string = samba %h
	workgroup = MNS_SVR1
	printing = cups
	printcap name = cups
	printcap cache time = 750
	cups options = raw
	map to guest = Bad User
	logon path = \\%L\profiles\.msprofile
	logon home = \\%L\%U\.9xprofile
	logon drive = P:
	usershare allow guests = No
	add machine script = /usr/sbin/useradd  -c Machine -d /var/lib/nobody -s /bin/false %m$
	local master = Yes
	netbios name = MNSSVR1
	os level = 65
	passdb backend = tdbsam
	security = user
	pam password change = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *new*password* %n\n *new*password* %n\n *Password\schanged*
	passwd chat debug = Yes
	passwd chat timeout = 4
	unix password sync = Yes
	invalid users = root @wheel
	obey pam restrictions = Yes

[citavi]
	comment = DB for Citavi knowledge management system
	browseable = Yes
	writable = Yes
	path = /daten/samba-shares/citavi
	read only = No
	create mask = 0664
	directory mask = 0775
 
Aus man smb.conf:

Code:
       create mode

           This parameter is a synonym for create mask.

       create mask (S)

           When a file is created, the necessary permissions are calculated
           according to the mapping from DOS modes to UNIX permissions, and
           the resulting UNIX mode is then bit-wise ´AND´ed with this
           parameter. This parameter may be thought of as a bit-wise MASK for
           the UNIX modes of a file. Any bit not set here will be removed from
           the modes set on a file when it is created.

           The default value of this parameter removes the group and other
           write and execute bits from the UNIX modes.

           Following this Samba will bit-wise ´OR´ the UNIX mode created from
           this parameter with the value of the force create mode parameter
           which is set to 000 by default.

           This parameter does not affect directory masks. See the parameter
           directory mask for details.

Code:
       force create mode (S)

           This parameter specifies a set of UNIX mode bit permissions that
           will always be set on a file created by Samba. This is done by
           bitwise ´OR´ing these bits onto the mode bits of a file that is
           being created. The default for this parameter is (in octal) 000.
           The modes in this parameter are bitwise ´OR´ed onto the file mode
           after the mask set in the create mask parameter is applied.

           The example below would force all newly created files to have read
           and execute permissions set for ´group´ and ´other´ as well as the
           read/write/execute bits set for the ´user´.

           Default: force create mode = 000

           Example: force create mode = 0755
 
Hallo saeckereier,

vielen Dank für deinen Hinweis auf die man page. Die hab ich auch gelesen. Dazu unzählige Artikel im Web. Ich denke, dass ich verstanden hab, wie create mask und force create mask funktionieren.
Mit
Code:
	create mask = 0664
	force create mode = 0664
müsste ich doch auf jeden Fall bei Dateirechten 664 landen, da create mask alles außer 664 entfernt und force create mode alles hinzufügt, was zu 664 noch fehlt.
Das ist ja auch nicht das Problem. Wie ich in meinem ersten Post geschrieben habe, bekommt die Datei die richtigen Rechte ja auch, nur eben nicht sofort, sondern erst, nachdem ich einmal die Sicherheitseinstellungen vom Client aus bearbeitet hab.
 
Hmm, sorry ich glaube ich hatte da was übersehen, ich dachte, du hättest force gar nicht verwendet. Folgende Ideen:
- Deaktivier mal ACLs
- Kopier mal eine Datei mittels eines Linux-SMB Clients (smbclient, mount -t cifs) auf den Rechner
- Deaktivier mal das Mapping der DOS-Attribute Archiv, Schreibgeschützt und was es da sonst noch gab

Vielleicht hat das ja was damit zu tun. Evtl. hilft dir inherit permissions ?
 
Hmm, sorry ich glaube ich hatte da was übersehen
Kann passieren, kein Problem.

- Kopier mal eine Datei mittels eines Linux-SMB Clients (smbclient, mount -t cifs) auf den Rechner
- Deaktivier mal das Mapping der DOS-Attribute Archiv, Schreibgeschützt und was es da sonst noch gab
Werd ich versuchen. Ich nehme an, du meinst map hidden, map readonly und map archive. Ich war der Meinung, dass das standardmäßig deaktiviert ist. Dein Hinweis, die man page zu lesen, war wohl doch ganz gut :O.

Evtl. hilft dir inherit permissions
Hab ich glaub ich schon versucht. Ich werd's aber nochmal testen, nur um zu sehen, ob das ordnungsgemäß funktioniert. Aber eigentlich wollte ich nicht, dass sich die Rechte immer vererben, daher kommt das eher nicht in Frage.

- Deaktivier mal ACLs
Was meinst du damit?

Momentan kann ich die angesprochenen Sachen leider nicht testen. Ich komm nicht an den Server ran, scheinbar ist das Rechenzentrum explodiert. Ich melde mich, wenn's wieder geht. Erstmal danke für die Tipps.
 
Hey,

genau die map ... Parameter meinte ich. ACL kannst du glaube ich erstmal vergessen, ich hab gerade in der manpage auch nicht den passenden Parameter gefunden. Eigentlich sehe ich das so, dass deine Konfiguration korrekt ist. Was für eine Distribution/Samba Version ist das? Was sagt testparm? Ggf. wäre es eine gute Idee, sich an die Samba Mailingliste zu wenden.. Oder mal den Loglevel hochdrehen und das Log sorgfältig lesen.
 
OpenSUSE 11.1
Kernel 2.6.27.45-0.1-pae
Samba 3.5.4-1.1-2382-SUSE-CODE11

Das mit dem Loglevel hab ich schon probiert, aber nichts Ungewöhnliches feststellen können. Es wird aber bei höheren Levels auch etwas unübersichtlich.

Testparm meint, dass alles in Ordnung wäre. Das einzige, was mir auffiel ist, dass beim config-dump ein oder zwei Parameter fehlten. Ich glaub, der directory mode war auch dabei. Aber ich kann es wie gesagt jetzt nicht nachschauen, denn das Rechenzentrum brennt scheinbar immer noch. Ist aber wohl auch nicht entscheidend.

Ich werd deinen Vorschlag mit den map ... - Parametern auf jeden Fall noch mal testen. Die Samba mailing list ist sicher auch ne gute Idee. Besten Dank erstmal.
 
Ok, ich hab die paar Dinge getestet:
  • map archive usw.: Keine Wirkung, außer dass die neue Datei anfangs 600 statt wie bisher 620 hat.
  • inherit permissions: Die Rechte werden (fast) richtig vererbt, aber auch wieder erst nach einmaliger Bearbeitung der Sicherheitseinstellungen vom Client aus.
  • mount von Linux-Kiste aus (gleiches OS): Funktioniert einwandfrei. Rechte werden gleich richtig gesetzt. Ist wohl ein Windows-Problem.
:(
 
Probiers mal mit der Mailingliste, aus meiner Sicht macht Samba da was falsch. So wie du es eingestellt hast, darf das nicht passieren.
 

Ähnliche Themen

Mit Windows auf Ubuntu Ordner erstellen

Samba 4.9.5-Debian - Kennwort von unix übernehmen

Samba Dateien und Ordner verschieben

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Keine Zugriff von Windows 10 auf Sambafreigaben

Zurück
Oben