Warum ändert das Setzen von acl für einen Benutzer die Gruppenberechtigungen in der Ausgabe von ls?

3

Ich versuche herauszufinden, warum sich die Ausgabe des Befehls ls geändert hat. Ich meine Gruppenberechtigungen für eine Datei.

Ich habe eine Datei mit dem Namen "file" erstellt und deren Eigentümer und Gruppe geändert:

[root@training group3]# touch file
[root@training group3]# ls -la file
-rw-r--r--. 1 root root 0 Sep  8 15:29 file
[root@training group3]# chown uczen file
[root@training group3]# chgrp group3 file
[root@training group3]# ls -la file
-rw-r--r--. 1 uczen group3 0 Sep  8 15:29 file
[root@training group3]# getfacl file
# file: file
# owner: uczen
# group: group3
user::rw-
group::r--
other::r--

Dann habe ich zusätzliche rwx-Rechte für den Benutzer "ula" hinzugefügt:

[root@training group3]# setfacl -m u:ula:rwx file
[root@training group3]# getfacl file
# file: file
# owner: uczen
# group: group3 
user::rw- 
user:ula:rwx 
group::r-- 
mask::rwx 
other::r--

Meine Frage ist, warum die Ausgabe von ls -la (unten) jetzt "rwx" für die Gruppe im Vergleich zu "r--" zeigt, das von getfacl oben gezeigt wird. Warum wurden die Perms für die Gruppe (scheinbar?) Geändert, wenn ich durch setfacl nur Rechte für einige Benutzer hinzugefügt habe (ula)

[root@training group3]# ls -la file
-rw-rwxr--+ 1 uczen group3 0 Sep  8 15:29 file
ula
quelle

Antworten:

6

Ich erinnere mich nicht, wo ich die Begründung gefunden habe, aber es ist im Grunde genommen, um Überraschungen zu vermeiden.

Die meisten Menschen sind an die drei Sätze gewöhnt, die bei der lsBeschreibung des gesamten Zugriffs, den jeder erhalten kann, sichtbar sind . Wenn also die Spalte "Gruppe" ihre ursprüngliche Bedeutung beibehält, kann dies zu versehentlichen Sicherheitslücken führen. Zum Beispiel haben Sie diese Datei ...

-rw-rwxr--+ 1 uczen group3 0 Sep  8 15:29 file

... und Sie möchten alle außer dem Eigentümer daran hindern, es zu schreiben. Führen Sie also Folgendes aus chmod go-w:

-rw-r-xr--+ 1 uczen group3 0 Sep  8 15:29 file

Wenn Sie es eilig haben, bemerken Sie möglicherweise nicht, dass +ACLs vorhanden sind, oder Sie wissen nichts über deren Bedeutung. Wenn es eine Zugriffssteuerungsliste gibt, mit der eine andere Person in diese Datei schreiben kann, sind die Berechtigungen offener als erwartet.

Beachten Sie, dass dies auch für Programme gilt, nicht nur für Menschen. Einige Programme - zum Beispiel ssh- überprüfen die Unix-Berechtigungsbits und erfordern, dass group / other überhaupt keine Berechtigungen hat. Wenn die Datei eine zulässige ACL sshhätte , würde es nicht wissen. (Selbst wenn jemand OpenSSH über ACLs auf den neuesten Stand bringen würde, würden ältere Versionen immer noch nichts darüber wissen.)

Aus diesem Grund haben POSIX-ACLs einen speziellen mask:Eintrag, um das Maximum aller Berechtigungen festzulegen, die der Standardgruppe und allen ACL-Mitgliedern gewährt wurden , und das Feld "Gruppe" der Unix-Berechtigungen wurde geändert, um den Wert von mask:anstelle der Unix-Gruppe anzuzeigen . Wenn Sie dies zum Beispiel tun chmod g=rx, werden Sie tatsächlich festlegen mask::rx.

Wenn Sie also rw-r--r--+dort sehen, können Sie sicher sein, dass niemand diese Datei schreiben kann, unabhängig davon, welche ACLs vorhanden sind, und ohne sie tatsächlich überprüfen zu müssen. Wenn ein Programm eine Datei mit der Berechtigung 0600 sieht, kann es sich dessen auch sicher sein, ohne spezielle Kenntnisse über POSIX-ACLs (und in Zukunft auch über RichACLs, NFSv4-ACLs oder andere Typen - wenn sie diesem speziellen Verhalten folgen) zu benötigen.

Beachten Sie, dass in der getfaclAusgabe der Standardgruppeneintrag weiterhin als aufgeführt ist group::r--. Wenn Sie diesen bestimmten Eintrag tatsächlich ändern möchten, müssen Sie dies mit tun setfacl.

Siehe auch:

Grawity
quelle
1

Der Link im obigen Beitrag ist tot und dieser hat eine andere Antwort: https://www.usenix.org/legacy/publications/library/proceedings/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/main.html

Dementsprechend wird die ACL-Maske im Feld Gruppenberechtigungen anstelle der angezeigten Gruppenberechtigungen angezeigt.

Hier ist eine bessere Erklärung: https://unix.stackexchange.com/questions/65888/setfacl-correctly-changes-group-permissions/498907#498907


quelle