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.
quelle
vim
ist eigentlich das Ändern der Berechtigungen und dann das Zurücksetzen.root
?Antworten:
Sie können das Attribut "unveränderlich" für die meisten Dateisysteme unter Linux festlegen.
Um das unveränderliche Attribut zu entfernen, verwenden Sie
-
anstelle von+
:Um die aktuellen Attribute für eine Datei anzuzeigen, können Sie lsattr verwenden:
Die Hilfeseite chattr (1) enthält eine Beschreibung aller verfügbaren Attribute. Hier ist die Beschreibung für
i
:quelle
chattr
Befehl Teil dese2fsprogs
Pakets auf meinem System ist. Deshalb habe ich diese Aussage gemacht. Ich habe die Antwort basierend auf Ihrem Kommentar aktualisiert.Sie können:
root
oder in einen Dummy-Benutzer, der neu erstellt wurdechmod 440
diese Option , um das Lesen nach Gruppe (die Sie sind) zuzulassen.Wenn der richtige Benutzer nicht der einzige in dieser Gruppe ist, sollten Sie eine neue Gruppe erstellen und nur ihn hinzufügen und diese Gruppe dafür verwenden. Sie sind jedoch nicht der Eigentümer der Datei. Daher
vi
können Sie den Eigentümer der Datei nicht ändern.quelle
:w!
). vim geht jedoch nicht so weit, die Berechtigungen des Verzeichnisses vorübergehend zu ändern. Daher sollte es sicher sein, das Verzeichnis nicht beschreibbar zu halten.So machen Sie einen gesamten Verzeichnisbaum schreibgeschützt:
Um es wieder lesbar zu machen, wechseln Sie
+i
zu-i
.quelle