
Ich erstelle mehrere Ordner für Benutzer (BenutzerA/, BenutzerB/ usw.), in denen jeder in jedem Verzeichnis eine Datei/einen Ordner erstellen/lesen kann (BenutzerC kann DateiX in BenutzerA/ erstellen). Allerdings kann nur der Eigentümer des Verzeichnisses die Dateien in diesem Ordner ändern oder löschen (BenutzerC kann nur Dateien in BenutzerC/ ändern/löschen).
Ich habe versucht, die Verzeichnisberechtigungen auf 7777 zu ändern, die SUID gilt jedoch nicht für Verzeichnisse.
Wie erlaube ich, dass hochgeladene Dateien den Verzeichnisbesitzer erben?
Bearbeiten:BenutzerZ besitzt das Verzeichnis dirZ/. BenutzerZ kann alles in dirZ/ erstellen (hochladen), ändern, löschen und lesen.
Ebenso besitzt BenutzerY das Verzeichnis dirY/. Benutzer Y kann alles in dirY/ erstellen, ändern, löschen und lesen.
UserY kann auf dirZ/ zugreifen. UserY kann alles in dirZ/ erstellen oder lesen. UserYkann nichtirgendetwas in dirZ/ ändern oder löschen.
Ebenso kann UserZ auf dirY/ zugreifen. UserZ kann alles in dirY/ erstellen oder lesen. UserZkann nichtirgendetwas in dirY/ ändern oder löschen.
Antwort1
Es ist ziemlich seltsam, dass Sie das brauchen. Wenn Sie möchten, dass userC Dateien in / erstellen und löschen kann userA
, erteilen Sie userC Schreibberechtigung für das Verzeichnis. Bei Ihrem Setup wäre es am einfachsten, alle diese Benutzer in eine gemeinsame Gruppe zu stecken mygroup
und alle Benutzerverzeichnisse für diese Gruppe beschreibbar zu machen.
chgrp mygroup userA userB userC
chmod g+w userA userB userC
VerwendenZugriffskontrolllisten (ACL)wenn Sie mehr Flexibilität benötigen (z. B. mehrere Gruppen auf diese Verzeichnisse zugreifen dürfen). SieheAlle neuen Dateien in einem Verzeichnis für eine Gruppe zugänglich machenwenn Sie Hilfe beim Aktivieren von ACLs auf Ihrem System benötigen.
Wenn Sie möchten, dass Benutzer Dateien in einem anderen Verzeichnis als ihrem eigenen ändern können, richten Sie entweder ein, dass die Dateien für alle Gruppen beschreibbar sind, oder legen Sie eine Standard-ACL für das Verzeichnis fest.
setfacl -d -m group:mygroup:rwx userA userB userC
Wenn Sie den Besitzer der Datei wirklich ändern müssen (aber warum ist das wichtig, da alle Dateien ohnehin für denselben Benutzerkreis zugänglich sind?), können Sie dies über einen Job tun, der als Root ausgeführt wird, wenn eine Datei hochgeladen wird. Unter LinuxSie können ein auf inotify basierendes Tool verwendenwenn es wirklich nötig ist, aber es wäre besser, das Tool zu ändern, das den Upload durchführt (zum einen gibt es bei einer auf inotify basierenden Lösung ein kleines Zeitfenster, in dem die Datei den falschen Eigentümer hat).
Antwort2
Unix-Dateisysteme haben keine Windows-ähnlichen Zugriffskontrollen, die es Ihnen ermöglichen würden, zwischen dem Erstellen und Ändern einer Datei zu unterscheiden. Sobald Sie einem Benutzer die Berechtigung zum Erstellen von Dateien in einem Verzeichnis erteilen (chmod +w), kann er diese auch ändern. Daher müssen Sie diese zusätzliche Funktionalität auf der Serverseite bereitstellen.
Beispielsweise vsftpd
können chown
Dateien füranonymVerbindungen – ich würde erwarten, dass es (mehr oder weniger einfach) auf andere Benutzerkonten erweiterbar ist, und es besteht die Möglichkeit, dass einige andere FTP-Daemons diese Funktion bereits haben.
Wenn Sie FTP nicht unbedingt verwenden müssen,Samba
scheint das zu können, was Sie brauchen – sehen Sie sich die inherit owner
Option (pro Aktie) an.