Während ich angemeldet bin, kann ich Folgendes tun:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Dann kann ich vim öffnen (nicht als root
), bearbeiten bar
, einen Schreibvorgang erzwingen w!
, und die Datei wird geändert.
Wie kann ich verhindern, dass das Betriebssystem Dateien ändert?
UPDATE 02.03.2017
chmod 500 foo
ist ein roter Hering: Die Schreibberechtigung für ein Verzeichnis hat nichts mit der Fähigkeit zu tun, den Inhalt einer Datei zu ändern - nur mit der Fähigkeit, Dateien zu erstellen und zu löschen.chmod 400 foo/bar
verhindert jedoch, dass der Inhalt der Datei geändert wird. Dies verhindert jedoch nicht, dass die Berechtigungen einer Datei geändert werden. Der Eigentümer einer Datei kann die Berechtigungen seiner Datei jederzeit ändern (vorausgesetzt, er kann auf die Datei zugreifen, dh die Berechtigung für alle Ahnenverzeichnisse ausführen). Tatsächlich zeigt strace (1), dass vim (7.4.576 Debian Jessie) dies tut - vim ruft chmod (2) auf, um vorübergehend die Schreibberechtigung für den Eigentümer der Datei hinzuzufügen, ändert die Datei und ruft dann chmod ( 2) erneut, um die Schreibberechtigung zu entfernen. Deshalbchattr +i
funktioniert using - nur root kann callenchattr -i
. Theoretisch könnte vim (oder ein anderes Programm) mit chattr dasselbe tun wie mit chmod für eine unveränderliche Datei, wenn es als root ausgeführt wird.
root
?
vim
ist eigentlich das Ändern der Berechtigungen und dann das Zurücksetzen.