Einfaches Problem bei der Vererbung von Berechtigungen

1

Das sollte einfach sein, aber ich bringe es nicht dazu, im Test zu arbeiten.

In einer von mir verwendeten Torrent-Anwendung (CLI-basiert) können Benutzer / Gruppen / Berechtigungen der heruntergeladenen Dateien noch nicht definiert werden. Es macht auch Spaß, die Berechtigungen der Dateien so festzulegen, dass sie nicht wesentlich geändert werden können.

Ich möchte set-uid und set-group-id verwenden, um dies zu lösen.

Gegeben ein Pfad von so etwas: / Volumes / Torrents / Movies

Ich möchte, dass das Verzeichnis "movies" allen Benutzern auf dem System vollständigen Lese- und Schreibzugriff gewährt. Dateien sollten nicht ausführbar sein, aber natürlich müssen die Verzeichnisse vorhanden sein, um von CD in sie zu öffnen. Ich vertraue allen Benutzern auf diesem System, obwohl ich es unterlassen werde, Bits für Dateien auszuführen, um versehentliche Fehler zu vermeiden.

Alles, was in "Filmen" gespeichert / gespeichert ist, sollte die Benutzer- / Gruppen- / Zugriffsrechte von Filmen erben und in alle Unterverzeichnisse und Dateien gelangen. Auf diese Weise sollte ich mir keine Sorgen um die Funktion zum Festlegen fehlender Berechtigungen in der Anwendung machen müssen. Wenn movies auf rw für foo: bar und user eingestellt ist, kommt the_user und fügt eine Datei in die Filme ein. Ich würde erwarten, dass die Dateien zu rw foo: bar werden.

Vielen Dank. Ich habe es auf verschiedene Arten versucht und bin kurz davor. Ich verwende selten set-uid und set-group-id oder die Sticky-Bits.

user17245
quelle
1
Welches Betriebssystem verwenden Sie?
Moab
1
Anscheinend Mac OSX, basierend auf dem Pfad "/ Volumes /".
Hello71

Antworten:

1

Das Beste, was Sie tun können, ist, das Verzeichnis setgid zu erstellen, wodurch die darin erstellten Dateien und Verzeichnisse den Gruppeneigentümer des Verzeichnisses erhalten. Das setgid-Bit wird jedoch nicht geerbt werden, was bedeutet, dass auf alles, was über die erste Ebene hinausgeht, der Gruppeneigentum nicht angewendet wird. Die einzige Möglichkeit, dies zu beheben, besteht darin, Cron oder Incron zu verwenden, um die Berechtigungsänderungen entsprechend anzuwenden.

Ignacio Vazquez-Abrams
quelle
Bist du dir da sicher? Alles, was ich über diese Zustände recherchiert habe, ist nicht der Fall en.wikipedia.org/wiki/Setuid
user17245
Welcher Teil dieses Artikels widerspricht dem, was ich gesagt habe?
Ignacio Vazquez-Abrams
1

Ich gehe davon aus, dass Sie Mac OS X verwenden, basierend auf Ihren vorherigen Fragen und dem Ordner "/ Volumes", den Sie erwähnt haben.

Ich habe einen Tipp von Dieser Beitrag Hier wird gezeigt, wie ein AppleScript erstellt und als Ordneraktion angehängt wird, mit der Berechtigungen für alle im Ordner abgelegten Dateien festgelegt werden. Hier ist das Skript, wie ich es gerade getestet habe:

on adding folder items to this_folder after receiving added_items
    tell application "Finder"
        set fold_name to the name of this_folder
        try
            repeat with i from 1 to number of items in added_items
                set new_item to item i of added_items
                set the item_path to the quoted form of the POSIX path of new_item
                do shell script ("/bin/chmod -R a+rw " & item_path)
            end repeat
        end try
    end tell
end adding folder items to

Geben Sie dies in den AppleScript-Editor ein und speichern Sie es unter / Library / Scripts / Folder Actions Scripts. Klicken Sie dann mit der rechten Maustaste auf den Ordner und wählen Sie "Ordneraktionen einrichten ..." (oder "Ordneraktion anhängen" für Leopard oder älter). Hängen Sie Ihr Skript an und testen Sie es. Legen Sie ein Element in den Ordner ab und es sollte rekursiv alles chmodieren, um das Lesen / Schreiben für alle zu ermöglichen.

Dies funktioniert, wenn Sie etwas direkt in den Ordner ziehen, einschließlich eines anderen Ordners: Alle Inhalte werden rekursiv aktualisiert. Wenn Sie jedoch Dateien in einen bereits vorhandenen Unterordner ablegen, wird die Ordneraktion nicht aufgerufen. Ich habe keinen Weg gefunden, das zu beheben.

Stephen Jennings
quelle
Vielen Dank. Ich würde mich wahrscheinlich nur darauf stützen, launchd zu verwenden und ein schnelles chown foo auszuführen: bar / path / to / files / * Im Moment versuche ich mehr über setgid und setuid zu lernen, so viel ich kann.
user17245
0

Die in einer anderen Antwort verlinkte Wikipedia-Seite widerspricht der Antwort selbst: Das Set-GID-Bit wird normalerweise vererbt. Dies gilt sicherlich für Linux, und ich glaube an Solaris. Unter Mac OS X scheint dies jedoch nicht der Fall zu sein Handbuchseite Anscheinend geht es mehr um ACLs als um normale Berechtigungen. Vielleicht haben Sie also etwas Glück mit den Berechtigungen file_inherity und directory_inherit in Kombination mit den herkömmlichen Berechtigungen.

Sam Brightman
quelle