it-swarm.com.de

Wie kann ich neue Dateiberechtigungen vom übergeordneten Verzeichnis erben lassen?

Ich habe ein Verzeichnis namens data. Dann führe ich ein Skript unter der Benutzer-ID 'robot' aus. robot schreibt in das Verzeichnis data und aktualisiert die darin enthaltenen Dateien. Die Idee ist, dass data sowohl für mich als auch für den Roboter zum Aktualisieren offen ist.

So richte ich die Berechtigungs- und Eigentümergruppe ein

drwxrwxr-x  2 me robot-grp 4096 Jun 11 20:50 data

wo sowohl ich als auch roboter zur 'roboter-grp' gehören. Ich ändere die Berechtigung und die Eigentümergruppe rekursiv wie das übergeordnete Verzeichnis.

Ich lade regelmäßig neue Dateien mit data in das Verzeichnis rsync hoch. Leider erben neu hochgeladene Dateien nicht die Berechtigung des übergeordneten Verzeichnisses, wie ich hoffe. Stattdessen sieht es so aus

-rw-r--r-- 1 me users       6 Jun 11 20:50 new-file.txt

Wenn der Roboter versucht, new-file.txt zu aktualisieren, schlägt dies aufgrund fehlender Dateiberechtigungen fehl.

Ich bin mir nicht sicher, ob das Setzen von umask hilft. In jedem Fall folgen die neuen Dateien nicht wirklich darauf.

$ umask -S
u=rwx,g=rx,o=rx

Ich bin oft durch Unix-Dateiberechtigungen verwirrt. Habe ich überhaupt einen richtigen Plan? Ich benutze Debian Lenny.

81
Wai Yip Tung

Sie möchten die Standard-Umask Ihres Systems nicht ändern, da dies ein Sicherheitsrisiko darstellt. Die Sticky-Bit-Option funktioniert bis zu einem gewissen Grad, aber die Verwendung von ACLs ist der beste Weg. Das ist einfacher als Sie denken. Das Problem bei einfachen ACLs ist, dass sie standardmäßig nicht rekursiv sind. Wenn Sie eine ACL für ein Verzeichnis festlegen, erben nur die Dateien in diesem Verzeichnis die ACL. Wenn Sie ein Unterverzeichnis erstellen, wird die übergeordnete ACL nur dann abgerufen, wenn für die ACL die Option "recurse" festgelegt ist.

Stellen Sie zunächst sicher, dass ACLs für das Volume aktiviert sind, auf dem sich das Verzeichnis befindet. Wenn Sie tune2fs haben, können Sie Folgendes ausführen:

# tune2fs -l /dev/sda1 | grep acl
Default mount options:    user_xattr acl

Wenn Sie keinen tune2fs haben, überprüfen Sie fstabs:

# cat /etc/fstab 
/dev/system/root        /                       ext3    defaults        1 1
/dev/system/home        /home                   ext3    defaults        1 2
/dev/storage/data       /data                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2

Die vierte Spalte mit der Aufschrift "Standard" bedeutet, dass auf meinem System (CentOS 5.5) ACLs aktiviert sind. Wenn Sie Zweifel haben, belassen Sie die Standardeinstellungen. Wenn Sie versuchen, die Zugriffssteuerungsliste festzulegen und Fehler zu beheben, gehen Sie zurück und fügen Sie die Option acl direkt nach den Standardwerten zu/etc/fstab hinzu: defaults,acl.

Soweit ich weiß, soll jeder in der Benutzergruppe Schreibzugriff auf das Datenverzeichnis haben. Dies wird folgendermaßen erreicht:

setfacl -Rm g:users:rwX,d:g:users:rwX data/
51
churnd

Durch das Markieren einer Verzeichnis-Setgid (g+s) werden neue Dateien die Gruppeneigentümer des Verzeichnisses erben, aber die -g-Option von rsync versucht, dies zu überschreiben.

Im Allgemeinen gelten andere Antworten. Wenn Sie jedoch erwähnen, dass rsync die Ursache des Problems ist, müssen Sie möglicherweise nur den Aufruf optimieren.

Das beliebte -a-Flag macht zunächst einmal rsync-Kopierberechtigungen. Verwenden Sie -r anstelle von -a oder fügen Sie -no-p (für keine Berechtigungssynchronisierung) und -no-g (für keine Gruppensynchronisierung) hinzu. Außerdem unterstützt rsync das Flag --chmod, um Berechtigungen für neu erstellte Dateien zu ändern.

4
mbq

Ihre umask ist falsch für die Berechtigungen, die Sie möchten. Sie möchten eine Umask von 002. Sie haben derzeit eine Umask von 022. Außerdem ist der Kommentar zum Festlegen der Verzeichnis-Setgid korrekt, aber ich bin nicht sicher, ob Sie die Dateigruppen-Inhaberschaft ändern möchten oder nicht.

Unix-Dateiberechtigungen sind eigentlich ein sehr einfaches Modell. Ich finde ACLs völlig verwirrend. :-)

3
Omnifarious