GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Dateiberechtigungen und Speichern?

Angenommen, Sie öffnen eine Datei, für die Sie Schreibrechte haben.
In der Zwischenzeit ändern Sie die Berechtigungen und entfernen die Schreibrechte, während Sie die Datei noch in einem Editor geöffnet haben.

Was passiert, wenn Sie es bearbeiten und speichern?

Akzeptierte Antwort:

Die Berechtigungen einer Datei werden beim Öffnen der Datei geprüft. Das Ändern der Berechtigungen hat keinen Einfluss darauf, was Prozesse, die die Datei bereits geöffnet haben, damit tun können. Dies wird manchmal bei Prozessen verwendet, die mit zusätzlichen Privilegien beginnen, eine Datei öffnen und diese zusätzlichen Privilegien dann löschen:Sie können immer noch auf die Datei zugreifen, aber möglicherweise nicht in der Lage sein, sie erneut zu öffnen.

Editoren halten eine Datei jedoch normalerweise nicht geöffnet. Wenn ein Editor ein Dokument öffnet, passiert im Hintergrund, dass der Editor den Dateiinhalt in den Arbeitsspeicher lädt und die Datei schließt. Wenn Sie das Dokument speichern, öffnet der Editor die Datei und schreibt den neuen Inhalt.

Editoren können beim Speichern einer Datei eine von zwei Strategien verfolgen. Sie können eine neue Datei erstellen und sie dann an ihren Platz verschieben. Alternativ können sie die vorhandene Datei öffnen und den alten Inhalt überschreiben. Das Überschreiben hat den Vorteil, dass sich die Berechtigung und der Eigentümer der Datei nicht ändern und dass es sogar in einem schreibgeschützten Verzeichnis funktioniert. Der Hauptnachteil des Überschreibens besteht darin, dass, wenn das Speichern mittendrin fehlschlägt (Editor-Absturz, Systemabsturz, Festplatte voll, …), Sie ein abgeschnittenes Dokument zurücklassen. Unterschiedliche Redakteure wählen unterschiedliche Strategien; die guten schreiben wenn möglich erst ins neue, dann verschieben sie und überschreiben nur in einem Nur-Lese-Verzeichnis (nachdem sie woanders ein Backup gemacht haben).

Wenn der Editor der Strategie „Neu-dann-verschieben“ folgt, spielen die Berechtigungen für die Datei keine Rolle:Der Editor erstellt eine neue Datei und benötigt dafür nur Schreibrechte für das Verzeichnis. Es gibt zwei Ausnahmen:Wenn das Verzeichnis das Sticky-Bit enthält, kann das Ändern des Eigentümers der Datei (aber nicht der Berechtigung) es dem Prozess unmöglich machen, die neue Datei an ihren Platz zu verschieben. Eine weitere Ausnahme gilt für Systeme, die die Löschberechtigung durch ACLs unterstützen (wie OSX):Das Widerrufen der Löschberechtigung für die Datei kann das Verschieben unmöglich machen.

Wenn der Editor der Überschreibstrategie folgt, macht das Entziehen der Schreibberechtigung das Speichern unmöglich. (Jedoch können einige Editoren, die standardmäßig überschreiben, auf „Neu-dann-Verschieben“ zurückgreifen.)

Verwandte:Wie ändere ich einen Dateinamen, der Zeichen enthält?

In Vim können Sie die Überschreibstrategie erzwingen, indem Sie backupcopy ausschalten Möglichkeit; Sehen Sie auch, warum sich der Inode-Wert ändert, wenn wir im „vi“-Editor bearbeiten?. In Emacs können Sie die Überschreibstrategie erzwingen, indem Sie backup-by-copying setzen Variable zu t .


Linux
  1. Grundlagen der Linux-Dateiberechtigungen

  2. Linux-Berechtigungen:Eine Einführung in chmod

  3. Linux – Unix-Berechtigungen und Dateitypen verstehen?

  4. Vorrang von Benutzer- und Gruppeneigentümern bei Dateiberechtigungen?

  5. So ändern Sie Datei- und Verzeichnisberechtigungen mit dem Dateimanager

Chmod-Befehl in Linux (Dateiberechtigungen)

So speichern Sie eine Datei in Vi / Vim und beenden den Editor

VIM-Editor

Linux-Dateiberechtigungen und Eigentumsrechte mit Beispielen erklärt

Verwalten Sie Verzeichnis- und Dateiberechtigungen mit chmod Recursive

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen