Ich kann keine Datei löschen, für die ich als Gruppenmitglied Schreibrechte habe

12
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove `testfile': Permission denied

Was fehlt?

Tshepang
quelle

Antworten:

21

Das Löschen einer Datei bedeutet, dass Sie Änderungen am Verzeichnis vornehmen sie sich befindet, nicht an der Datei selbst. Ihre Gruppe benötigt rw im Verzeichnis, um eine Datei entfernen zu können. Die Berechtigungen für eine Datei dienen nur dazu, Änderungen an der Datei selbst vorzunehmen.

Dies kann zunächst verwirrend wirken, bis Sie über die Funktionsweise des Dateisystems nachdenken. Eine Datei ist nur ein Inode, und das Verzeichnis verweist auf den Inode. Durch das Entfernen entfernen Sie lediglich einen Verweis auf den Inode dieser Datei im Verzeichnis. Sie ändern also das Verzeichnis, nicht die Datei. Sie könnten eine feste Verknüpfung zu dieser Datei in einem anderen Verzeichnis haben, und Sie könnten sie immer noch aus dem ersten Verzeichnis entfernen, ohne die Datei selbst zu ändern. Sie wäre immer noch im anderen Verzeichnis vorhanden.

jsbillings
quelle
Ich bekomme 775 drwxrwxr-xfür das Verzeichnis.
Tshepang
1
Was ist der Gruppenbesitz des Verzeichnisses? Denken Sie daran, dass die zweite 7, die Sie erwähnt haben, die Berechtigung der Verzeichnisgruppe ist, nicht die Gruppe Ihres Benutzers.
Jsbillings
1
ls -ld /path/to/directoryoder einfach, ls -ld .wenn Sie bereits in dieses Verzeichnis aufgenommen haben.
Jsbillings
1
Aus irgendeinem Grund kann stat die Gruppen-ID 1002 nicht suchen. stat sucht die Gruppen-ID in / etc / group, NIS, LDAP usw. und es wird ein Fehler angezeigt. Aus diesem Grund wird UNBEKANNT angezeigt. Ich würde versuchen zu rennen, um getent group 1002zu sehen, ob es Ihnen einen ausführlicheren Fehler gibt.
Jsbillings
1
Eigentlich finde ich dieses Verhalten überhaupt nicht verwirrend. Es ist identisch mit der Funktionsweise eines tatsächlichen "echten" Verzeichnisses, weshalb es als "Verzeichnis" bezeichnet wird und nicht beispielsweise als "Ordner", der sich ganz anders verhält. Wenn ich jemanden aus meinem Telefonbuch löschen möchte, gehe ich nicht zu ihr nach Hause und töte sie. Ich nehme einfach einen Stift und tippe ihre Nummer durch. IOW: Ich benötige Schreibzugriff auf das Verzeichnis und keinen Zugriff auf sie. Windows hat Ordner, Unix hat Verzeichnisse und beide verhalten sich wie ihre realen Gegenstücke. Verwirrung entsteht nur, wenn Sie sie vertauschen.
Jörg W Mittag
0

Nur das System kann eine Datei löschen, und nur wenn es keine Referenzen hat. Ein einfacher Benutzer kann nur die Verknüpfung einer Datei aufheben, dh sie aus einem Verzeichnis entfernen. Sie benötigen Schreibzugriff auf ein Verzeichnis, um die Verknüpfung einer Datei zu diesem Verzeichnis aufzuheben. Durch das Aufheben der Verknüpfung einer Datei wird die Datei nicht geändert, sodass der Schreibzugriff auf die Datei keine Rolle spielt.

David Schwartz
quelle