Wie erzwinge ich bestimmte Berechtigungen für neue Dateien / Ordner auf dem Linux-Dateiserver?

14

Ich habe ein Problem mit meiner Installation von Ubuntu 9.10 (Dateiserver) und seinen Samba-Berechtigungen. Einloggen und Lesen funktioniert einwandfrei. Das Erstellen neuer Verzeichnisse durch Benutzer schränkt jedoch den Zugriff für andere Benutzer ein. Wenn zum Beispiel Bob (Windows-Benutzer, der das Laufwerk zuordnet) einen Ordner im Verzeichnis erstellt, kann Jane (Mac-Benutzer, der nur smb mounts ausführt) davon lesen, aber nicht darauf schreiben - und umgekehrt. Ich muss dann CHMOD 777 ins Verzeichnis, damit alle glücklich sind. Ich habe versucht, die Optionen "create / directory mask" und "force" in der Datei smb.conf zu bearbeiten, aber dies scheint nicht zu helfen.

Ich bin dabei, eine rekursive chmod-Routine zu CRONTABEN, obwohl ich mir sicher bin, dass dies nicht die Lösung ist. Wie kann ich erreichen, dass alle neuen Artikel immer 777 sind? Hat jemand Vorschläge, um diese allgegenwärtige Situation zu beheben?

Beste

demütiger_coder
quelle
Benutzergruppen und andere native Berechtigungen, nicht chmod 777.
Warner

Antworten:

13

Normalerweise verwende ich die native Funktionalität von SAMBA für die Verwaltung von Berechtigungen und Gruppen für Freigaben. Beispielsweise..

force user=user1
force group=sharedgroup
create mask=775

Sie würden diese Einstellungen unter der Freigabe angeben. Stellen Sie sicher, dass SAMBA nach der Konfigurationsänderung neu geladen wird, was über das Init-Skript erfolgen kann.

Warner
quelle
1
Doch der Post sagt, er hat das getan und es hat nicht funktioniert ...
Mistiry
2
Dann hat er es falsch gemacht. Es klappt.
Warner
Ich bin nicht sicher, was los ist. Ich habe es manuell und über Webmin ohne Erfolg versucht. Vielleicht ist meine Gruppenwahl falsch? Ich habe versucht, "Benutzer" sowie verschiedene manuell erstellte Gruppen zu verwenden, von denen alle Mitglieder wurden. Unabhängig davon, was ich tue, können Benutzer nichts manipulieren, was sie nicht selbst platziert haben. Die einzige "Lösung" besteht darin, dass sich alle Benutzer als GUEST anmelden (oder einbinden), was Verwirrung stiftet.
humble_coder
SAMBA verwendet eine Kombination von Dateisystemberechtigungen und -einstellungen in der Konfiguration. Wenn Benutzer write listin der Freigabekonfiguration keine oder keine anderen Schreibrechte haben, funktioniert dies nicht. Wenn der Benutzer, unter dem SAMBA ausgeführt wird, nicht auf die Verzeichnisse zugreifen kann, funktioniert dies nicht. Benutzer sollten Mitglieder der entsprechenden Gruppe sein, die Verzeichnisse und Dateien sollten Eigentum dieser Gruppe sein und das beschreibbare Bit für die Gruppe gesetzt haben. Sie können auch die SAMBA-Protokolle überprüfen.
Warner
2
Ich habe lange danach gesucht! Vielen Dank! :) Es funktioniert wie erwartet.
NagyI
2

Legen Sie die Berechtigungen für das Verzeichnis wie folgt auf 2777 fest:

chmod 2777 /shared/dir

Dadurch erben alle Dateien und Ordner im Verzeichnis '/ shared / dir' die Berechtigungen des obersten Verzeichnisses, in diesem Fall 777.

Stellen Sie anschließend sicher, dass alle Dateien über die richtigen Berechtigungen verfügen:

chmod -R 777 /shared/dir
Mistiry
quelle
Über die einzige Situation, in der öffentlich beschreibbar ist akzeptabel ist mit /tmp.
Warner
1
Ja, je nach Situation ist es wahrscheinlich besser, 774 oder sogar 770 zu verwenden. Aber er fragte, wie man sie alle '777' macht, also habe ich das nur in meinem Beispiel verwendet.
Mistiry
3
Ja, aber wie kann ich sicherstellen, dass alle zukünftigen Dateien, die über das Netzwerk in dieses Verzeichnis kopiert werden, unabhängig von ihren ursprünglichen Berechtigungen dieselben Berechtigungen erhalten? Ich habe keine Probleme, wenn ich es manuell mache, ich möchte es einfach automatisiert haben.
humble_coder
2
Das funktioniert nicht. Das Flag setgid für Ordner legt die Gruppe der neuen Dateien und Ordner fest, nicht die Berechtigungen, und es ist nicht zulässig, chmod die ganze Zeit auszuführen. Ich benötige eine Lösung, die nicht mit Samba zusammenhängt, für Steam unter Linux, damit ich die Bibliothek für Benutzer freigeben kann.
Sam Watkins
2

Mir ist klar, dass dies eine alte Frage ist, aber ich hatte kürzlich ein ähnliches Problem und habe es folgendermaßen gelöst:

[Teilen]
Sicherheitsmaske = 0770
Erstelle Maske = 0770
Erzwinge Erstellungsmodus = 0660
comment = Samba-Freigabe für die IT
path = / raid / share
durchsuchbar = JA
Gast ok = nein
Schreibe Liste = root, @ "DOMAIN + it_nfs"
Force-Gruppe = DOMAIN + it_nfs

Dies stellt sicher, dass sich Benutzer in AD in der Sicherheitsgruppe "it_nfs" befinden müssen, alle Dateien mit der Gruppe "it_nfs" geschrieben werden und alle Dateien mit mindestens 0660 und höchstens 0770 Berechtigungen geschrieben werden. Durch das Erzwingen der Gruppen-ID wird sichergestellt, dass alle Mitglieder dieser Gruppe die Dateien auf der Freigabe lesen und schreiben können. Andernfalls kommt es vor, dass eine als bob: bob geschriebene Datei nicht von charlie: charlie geschrieben werden kann, obwohl sich beide in "it_nfs" befinden.

Evan
quelle
0

Aus den Kommentaren der akzeptierten Antwort geht hervor, dass weder das OP-Problem noch die anderen Antworten gelöst wurden, falls das OP zufällig dasselbe Problem hatte wie ich:

Freigabe auf einer NTFS / FAT-Partition.

Beachten Sie Folgendes , wenn Sie Ihre Desktop-Festplatte an einen NAS anschließen, um Ihre Familienalben zu teilen: fs mount params für Benutzer, Gruppen, Erstellungsmodi usw. überschreiben alles, was für Samba konfiguriert ist! ;)

(ZB in meinem Fall, unabhängig davon, smb.confwas alles von erstellt wurde root, mit 777- gemäß der fstab defaultsfür die NTFS-Sicherungshalterung ...)

Gr.
quelle