Verschieben und Löschen von Dateien in Setguid-Ordnern

Verschieben und Löschen von Dateien in Setguid-Ordnern

Ich musste meine Mail-Datei durch eine bereinigte Version ersetzen (auf diesem Rechner dient die gesamte Aufgabe von Mail, Cron-Jobs zu überwachen – es gibt also keinen Grund, E-Mails, die älter als n Tage sind, nicht zu löschen).

Die Datei hat Lese-/Schreibberechtigung für mein Benutzerkonto, aber keine Rechte für andere Benutzer oder Gruppen. Ihr Gruppeneigentümer ist die Mail-Gruppe, da das Setguid-Bit für /var/spool/mail gesetzt ist.

Ich war kein Mitglied der Mailgruppe.

drwxrwsr-x 2 root mail 4096 2. Sep 15:17 .
drwxr-xr-x 14 root root 4096 10. Mai 09:27 ..
-rw------- 1 meinBenutzer mail 219722 Sep 2 04:56 meinBenutzer

Ich konnte diese Datei weder verschieben noch löschen, bis ich mich selbst zum Mitglied der Mailinggruppe machte.

Meine Frage ist: „Warum?“ Warum sollte ich, obwohl ich nachweislich die Berechtigung zum Lesen und Schreiben dieser Datei habe, Mitglied einer Gruppe werden, die weder das eine noch das andere hat, die Berechtigung zum Verschieben und Löschen der Datei erhalten?

Antwort1

Dies liegt daran rm, dass bei mv(und ähnlichen) Änderungen an der Verzeichnisstruktur erforderlich sind und wSie diese nicht durchführen können, wenn Sie nicht über die Schreibberechtigung () für das Verzeichnis verfügen.

Dies ist unabhängig von der Berechtigung der betreffenden Datei, Sie benötigen lediglich eine ausreichende Berechtigung für das übergeordnete Verzeichnis. Beachten Sie, dass es rmsich bei der Operation tatsächlich um den unlink(2)Systemaufruf handelt, der die Datei lediglich von der Datei-Inode-Zuordnung des Verzeichnisses trennt. Während mv-ing innerhalb desselben Dateisystems rename(2)ausgeführt wird, wird der Inode der Datei dem neuen Verzeichnis zugeordnet.

Wie Sie sehen, ist für all dies eine Änderung des übergeordneten Verzeichnisses erforderlich, unabhängig von der Berechtigung der Datei selbst. Sie benötigen also eine wBerechtigung für das Verzeichnis, um Dateien umzubenennen/entfernen/neue Dateien zu erstellen.

Wenn jetzt das SETGID-Bit für ein Verzeichnis gesetzt ist, gehören alle Dateien in diesem Verzeichnis derselben Gruppe, nämlich der Eigentümergruppe dieses Verzeichnisses.

In Ihrem Fall /var/spool/mailgehört das Verzeichnis „ root:mailmit der Berechtigung“ 775und mit gesetztem STDGID-Bit, wodurch alle Dateien in diesem Verzeichnis derselben Gruppe gehören mail.

Wenn Sie also umbenennen/entfernen möchten, myfilebenötigen Sie eine ausreichende Berechtigung für das /var/spool/mailVerzeichnis. Sie müssen entweder auf rootoder Mitglied der mailGruppe sein. Die Berechtigung für myfileist hier, wie zuvor erläutert, irrelevant.

Antwort2

Ich denke, das liegt daran, dass beim Verschieben oder Löschen einer Datei die Berechtigungen des übergeordneten Verzeichnisses wichtig sind. Da das Verschieben einer Datei bedeutet, dass eine Kopie der Datei erstellt und das Original gelöscht wird, benötigen Sie die richtige Berechtigung für das Verzeichnis, um dies tun zu können. In diesem Fall erhalten Sie diese erforderlichen Berechtigungen, wenn Sie Ihren Benutzer zur Mailinggruppe hinzufügen.

verwandte Informationen