Wie kann verhindert werden, dass ein Benutzer seine Berechtigungen für das Ausgangsverzeichnis ändert?

7

Wenn smithdas Home-Verzeichnis des Benutzers über die folgenden Berechtigungen verfügt:

$ ls -l /home/staff
drwxr-x---   51 smith    staff       4096 Sep 18 09:08 smith/

Kann er irgendwie verhindern, dass er die Berechtigung seines Home-Verzeichnisses beispielsweise auf 755 ändert?

Fuji San
quelle
Klärte ein Argument darüber, ob dies notwendig ist oder nicht; Fühlen Sie sich frei, im Chat darüber zu streiten, aber die Frage ist, wie man etwas macht
Michael Mrozek

Antworten:

10

Eine Möglichkeit besteht darin, Benutzergruppen zu verwenden (dh eine Gruppe für jeden Benutzer) und dann die Berechtigungen für das Ausgangsverzeichnis auf root: smith, mode 0770 zu setzen.

Eine andere (hackigere) Möglichkeit besteht darin, ein Skript zu erstellen: Erstellen Sie ein Skript, das alle Home-Verzeichnisse überprüft (über setpwent () / getpwent ()), die sich unter / home befinden (z. B. nicht / root), und warnt entweder, wenn es ein gibt Diskrepanz oder ändern Sie die Berechtigungen vor Ort.

Letzteres habe ich in der Vergangenheit selbst in einer Mehrbenutzerumgebung gemacht und jahrelang wie ein Zauber gearbeitet.

V13
quelle
Das Skript müsste jede Sekunde nach einer Änderung der Verzeichnisberechtigungen im Verzeichnis / home / staff suchen.
Fuji San
3
Sie könnten wahrscheinlich inotify werden, um sofort nach Änderungen zu suchen , obwohl es immer noch ein schmales Fenster gibt, bevor Sie es wieder ändern.
pjc50
@FujiSan alles hängt davon ab, was Sie erreichen wollen. Wenn Sie versuchen, dies zu verhindern, ist selbst jede Sekunde nicht häufig genug. Wenn Sie nur versuchen, Ihre Benutzer vor Fehlern / Unwissenheit zu schützen, ist eine einmal pro Minute mehr als ausreichend, insbesondere wenn Sie dies mit einer E-Mail mit Informationen versehen.
V13
3

Ihr Wunsch ist nur möglich, wenn das Betriebssystem und das betreffende Dateisystem den von NTFS und ZFS verwendeten und von NFSv4 standardisierten ACL-Standard unterstützen.

Ob Sie also tun können, was Sie möchten, hängt vom Betriebssystem und dem Dateisystem ab.

Herkömmliche UNIX-Regeln besagen, dass der Besitz eines Verzeichnisses durch den Benutzer auch Änderungen des Zugriffsmodus zulässt. Mit ACLs können Sie dem Benutzer das Ändern von ACLs in seinem eigenen Verzeichnis verweigern.

schily
quelle
Das Betriebssystem ist Linux (Fedora). Ich denke du redest setfacl. Wie würdest du das machen?
Fuji San
4
"Traditionelle UNIX-Regeln besagen, dass Schreibberechtigungen in ein Verzeichnis auch Änderungen des Zugriffsmodus zulassen." - das ist nicht wahr. Sie müssen es besitzen, nicht nur Schreibzugriff haben.
Random832
@ Fuji San - Nein, ich spreche nicht setfaclüber den ACL-Standard. setfacl war ein Vorschlag von Sun und anderen aus dem Jahr 1993, der 1997 zurückgezogen wurde, weil er nicht den Kundenwünschen entsprach. Der ACL-Standard ist in NTFS und ZFS implementiert und die ACLs können von chmod geändert werden, siehe schillix.sourceforge.net/man/man1/chmod.1.html
schily