Ich kann Samba nicht dazu bringen, die richtigen Berechtigungen für erstellte Verzeichnisse festzulegen

17

Ich habe einen Ubuntu-Server, der einige Ordner mit Samba teilt. Wenn ein Client einen neuen Ordner oder eine neue Datei erstellt, werden die Berechtigungen nicht gemäß den Einstellungen in smb.conf festgelegt.

Meine aktuellen Einstellungen für eine bestimmte Freigabe:

[share]
    path = /mnt/share
    browsable = yes
    guest ok = no
    writable = yes
    read only = no
    create mask = 0774
    directory mask = 0774
    write list = netuser

Wenn ein Samba-Client (eine Windows 7-Box) das Konto "netuser" verwendet, um eine Datei oder ein Verzeichnis zu erstellen, werden die Berechtigungen

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

Das übergeordnete Verzeichnis hat das Flag "Gruppen-ID festlegen" und damit den Eigentümer der Sambashare-Gruppe. Die Idee ist, dass sowohl Samba-Benutzer als auch Server-Benutzer zur Sambashare-Gruppe gehören und daher in der Lage sein sollen, Dateien und Verzeichnisse zu bearbeiten, zu löschen und zu erstellen. Da für erstellte Ordner jedoch das Schreibflag für Gruppen nicht festgelegt ist, können Serverbenutzer keine neuen Dateien oder Ordner in diesen Ordnern ohne sudo erstellen.

Ich habe das Hinzufügen und Entfernen der Verzeichnismaske, den Verzeichnismodus erzwingen, den Verzeichnissicherheitsmodus und den Verzeichnissicherheitsmodus erzwingen getestet, aber das Verhalten bleibt weiterhin bestehen. Neu erstellte Dateien und Ordner erhalten nicht die Berechtigung 774, sondern 764 bzw. 754.

Was vermisse ich? Warum setzt Samba nicht die richtigen Berechtigungen?

Zaz
quelle

Antworten:

19

Ich denke, Sie müssen die folgenden Parameter verwenden:

# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664

# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775

Ich suchte nach einer netten Erklärung, wie diese Einstellungen funktionieren, konnte aber nichts besseres finden als man smb.conf

Sie müssen für diese Optionen etwas nach unten scrollen.

Kurz gesagt, Windows-Berechtigungen sind nicht dasselbe wie Unix (Linux) und es ist ein bisschen seltsam, wie Samba Berechtigungen abbildet.

Panther
quelle
1
Ja, das scheint ungefähr die gleiche Manpage zu sein wie die von mir betrachtete samba.org/samba/docs/man/manpages-3/smb.conf.5.html , das Problem ist, dass es nicht wichtig zu sein scheint, welches Oktal Von mir festgelegte Werte. Ich erhalte weiterhin die gleichen Berechtigungen für die erstellte Datei oder den erstellten Ordner.
Zaz
Hast du alle Optionen festgelegt, die ich dir gegeben habe? In diesem Fall aktualisieren Sie bitte Ihren ersten Beitrag. An diesem Punkt würde ich vorschlagen, dass Sie einen Fehlerbericht einreichen.
Panther
1
Es wurde bereits gesagt, aber bei näherer Betrachtung und Prüfung hat das Hinzufügen der 2 zu den Verzeichnismasken das Problem behoben. Danke vielmals. : D
Zaz
Fantastisch, danke, dass Sie dies als akzeptierte Antwort markieren. Es hilft anderen bei einem ähnlichen Problem.
Panther
Die Konfiguration von Samba ist zu komplex und sehr schwer zu verstehen. Was zum Beispiel der logische Unterschied zwischen Kraft erzeugen und nur erzeugen ist, ergibt keinen Sinn. Ihr Tipp ist jedoch ein Lebensretter - danke!
Matthias Hryniszak
8

Nach vielen Versuchen und Fehlern ist dies der richtige Code, um das Samba-Verzeichnis mithilfe von SGID- und Unix-Gruppen freizugeben. Wenn der Benutzer anonym eine Verbindung herstellt, erhält er R / O. Wenn er sich anmeldet und Mitglied einer zugewiesenen Gruppe ist, erhält er R / W.

Ich habe die Gruppe "admin" als primäre Gruppe für Benutzer mit Schreibrechten festgelegt. Alle anderen Benutzer erhalten Leserechte.

Ich zwinge Benutzer zu niemandem, damit sich verschiedene Personen, die an denselben Dateien arbeiten, nicht gegenseitig stören.

Ich habe chmod 2755 für das freigegebene Verzeichnis festgelegt, sodass es erstellte Verzeichnisse mit derselben Gruppe "admin" erbt.

$ chmod -R 2755 /home/shares/test

Überprüfen, ob alles in Ordnung ist:

$ stat /home/shares/test
Access: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

Relevanter Teil von /etc/samba/smb.conf:

[test]
        comment = test
        path = /home/shares/test
        force user = nobody
        read only = No
        create mask = 0664
        force create mode = 0664
        directory mask = 02775
        force directory mode = 02775

Dieser Beitrag brachte mich auf die richtige Spur, aber testparm enthüllte 4 falsche Anweisungen, daher teile ich hier die feste Konfiguration. In Samba funktioniert es umso besser, je weniger Direktiven Sie angeben.

Andrius K
quelle
6

Ich hatte das gleiche Problem, aber alles wie Maske Richtlinien nicht für mich (Samba 4.3.11) arbeiten:

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

Die einzige Option, die funktionierte, war im Abschnitt [global] oder share:

 inherit permissions = yes

Ändern Sie einfach alle Ordner- und Dateiberechtigungen entsprechend Ihren Anforderungen, damit zukünftige Ordner und Dateien dieselben Berechtigungen übernehmen.

Medox
quelle
Ich benutze Samba Version 4.7.6-Ubuntu. Und das funktioniert auch für mich.
Andi S.
wahre Antwort für 4.8.11auf freebsdauch :)
Jitter
3

Bei der Verbindung von anderen Unix- / Linux- / OSX- / MacOS-Geräten tritt ein sehr ähnliches Problem auf: Alle Einstellungen werden ignoriert, es sei denn, Sie geben sie an

[global]

unix extensions = no

Und verbinden mit smb://<serverhost>statt mit cifs://<serverhost>.

Erik Carlseen
quelle
0
 Here add this code to the sudo nano smb.conf
 and restart sudo service smbd restart  and access from another local PC/computer using connect with smb://<serverhost>  to create or edit files/folder   html is folder name 

 [html]
   comment = admin access
   path = /var/www/html
   browsable = yes
   guest ok = no
   writable = yes
   valid users = @admin
   create mask = 664
   force create mode = 664
   security mask = 664
   force security mode = 664
   directory mask = 2775
   force directory mode = 2775
   directory security mask = 2775
   force directory security mode = 2775
Ghanshyam Nakiya
quelle