Die Berechtigung zum Ändern der gid (Gruppe) einer Datei, deren Eigentümer ich bin, wurde verweigert

17

Anscheinend vermisse ich immer noch einige Dinge über die Funktionsweise von Berechtigungen. Ich bin übrigens auf einem Debian-7-System. gerade habe ich diese datei von der ich heruntergeladen habe und die gehört dazu myuser:myuser, dass sowohl benutzer als auch gruppe auf mich eingestellt sind. Es befindet sich auch in meinem $HOMEVerzeichnis, da ich es dort heruntergeladen habe.

So weit, ist es gut. Jetzt möchte ich diese Datei mit einigen anderen Benutzern des PCs teilen und dafür den Gruppeneigentum der Datei auf "Benutzer" gruppieren. das schlägt jedoch fehl:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

Und der Inhalt des Ordners ist:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Ich bin mir nicht sicher, was mit den Berechtigungen los ist. Kann mir jemand erklären

nass
quelle
ist /xmas_carolSamba / NFS Mount?
Rahul Patil
Die Lösung ist setfacl(wenn das Dateisystem ACLs hat). siehe unix.stackexchange.com/questions/101263/…
ctrl-alt-delor
Ich hatte den gleichen Fehler, bis mir klar wurde, dass ich mich NUR dieser Gruppe hinzugefügt hatte. Mit anderen Worten, ich musste mich abmelden und wieder anmelden, damit die Änderungen wirksam wurden.
Jonathan

Antworten:

22

Ihr Benutzer ist wahrscheinlich kein Mitglied der usersGruppe, daher haben Sie nicht das Recht, dieser Gruppe eine Datei zuzuweisen. Um zu veranschaulichen:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

Dieses Verhalten wird in den POSIX-Spezifikationen erwähnt :

Nur der Eigentümer einer Datei oder der Benutzer mit den entsprechenden Berechtigungen darf den Eigentümer oder die Gruppe einer Datei ändern.

Einige Implementierungen beschränken die Verwendung von chgrp auf einen Benutzer mit entsprechenden Berechtigungen, wenn die angegebene Gruppe nicht die effektive Gruppen-ID oder eine der zusätzlichen Gruppen-IDs des aufrufenden Prozesses ist.

Der Hauptgrund dafür ist, dass Sie, wenn Sie kein Mitglied einer Gruppe sind, nicht in der Lage sein sollten, den Zugriff auf diese Gruppe zu ändern. Diese Antwort zu chownBerechtigungen ist ebenfalls relevant.

Traditionell haben Sie auf gemeinsam genutzten Systemen eine usersGruppe, zu der alle regulären Benutzer gehören, und dies ist die primäre Gruppe jedes Benutzers. Auf diese Weise werden Dateien im Besitz der usersGruppe erstellt, und alle Benutzer können sie lesen.

Wie auch immer, da dies nicht die Art und Weise ist, wie Debian-basierte Distributionen heutzutage eingerichtet werden, wäre die Art und Weise, einem bestimmten Benutzer Zugriff auf Ihre Datei zu gewähren, eine der folgenden

  1. Ändern Sie den Gruppeneigentum der Datei / des Verzeichnisses in eine Gruppe, der Sie und der andere Benutzer angehören.

  2. Ändern Sie einfach die Berechtigungen der Datei / des Verzeichnisses entsprechend:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Dadurch wird das Verzeichnis für alle zugänglich.

terdon
quelle
4

In den jüngsten UNICs (und "kürzlich" hat hier eine ziemlich breite Bedeutung) können Sie die Gruppeneigentümerschaft von Dateien nicht in eine Gruppe ändern, der Sie nicht angehören. Ältere Versionen verschiedener UNIX-Versionen haben dies in Anwendungsfällen wie Ihrem unterstützt, es hat sich jedoch als Sicherheitsproblem erwiesen.

Das Problem, den Gruppeneigentum in fremde Gruppen umwandeln zu können, ist recht trivial: Wenn für das Dateisystem, in dem sich die Datei befindet, Gruppenkontingente aktiviert sind, kann ein Benutzer mit böswilliger Absicht einfach das Kontingent der fremden Gruppe ausfüllen, was es für Benutzer unmöglich macht mit dieser Gruppe als primäre Gruppen-ID, um weitere Dateien zu erstellen. Dies kann sich leicht auf bereits ausgeführte Prozesse auswirken und dazu führen, dass diese aufgrund einer "vollen Festplatte" abstürzen.

Um Ihr Problem zu umgehen, gibt es (mindestens) zwei Möglichkeiten: Erstens können Sie den Superuser Ihres Systems bitten, die gewünschte Zielgruppe in die Liste der zusätzlichen Gruppen Ihres Kontos aufzunehmen. Das macht natürlich nur bedingt Sinn, wenn Sie sonst keine Beziehung zu dieser Gruppe haben.

Die andere Möglichkeit, die Datei nicht für die Welt beschreibbar zu machen, ist die Verwendung von ACLs, um der beabsichtigten Gruppe Lese- und Schreibberechtigungen zu erteilen:

$ setfacl -m group:thegroupsname:rwx the_file(s)
Andreas Wiese
quelle
Sie müssen execute (für eine reguläre Datei) nicht angeben und möchten wahrscheinlich keine Schreibrechte vergeben.
ctrl-alt-delor
2

Dies kann daran liegen, dass das unveränderliche Bit gesetzt ist. Holen Sie sich die Liste der Dateiattribute ausgeführt

lsattr /path/to/your/file

Wenn ich angezeigt werde, dann ist das unveränderliche Attribut gesetzt und niemand kann die Datei ändern (sogar root).

Um das Attribut zu entfernen, müssen Sie als root ausgeführt werden

chattr -i /path/to/your/file

Weitere Dateisystemattribute finden Sie in den Manpages

man chattr
man lsattr
Mavillan
quelle
Guter Punkt, aber von der Frage aus, ich nehme an, der Fragesteller hat keine Superuser-Rechte, die Sie brauchen, um das unveränderliche Flag zu löschen (zumindest auf allen Dateisystemen, die ich so lange mitgemacht habe). Da er gerade ein Archiv extrahiert hat, ist es höchstwahrscheinlich nicht das Problem, da der verwendete Archivierer es hätte einstellen müssen (dasselbe Problem).
Andreas Wiese
0

Wenn Sie sich gerade selbst zur Gruppe hinzugefügt haben, müssen Sie sich abmelden und erneut anmelden, damit die Änderungen wirksam werden.

Jonathan
quelle