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

Linux – obskure Gründe, warum eine Datei schreibgeschützt ist?

Das Linux-Dateisystem scheint Schichten und Schichten von Subtilität zu haben, über die ich von Fall zu Fall stolpere:

Ich möchte diese Datei bearbeiten:

[[email protected] ~]$ ls -l /a/b/c/foo.bar
-rw-rwxr-x    1 user   user      144529 Jan 26  2018 /a/b/c/foo.bar

Es sieht so aus, als ob es von Benutzer user beschreibbar sein sollte - wahr? Aber wenn ich versuche, die Datei in vim zu bearbeiten, erhalte ich eine „W10: Warning: Changing a readonly file ” Warnung.

Ich weiß, dass die Beschreibbarkeit von Dateien von den Berechtigungen des enthaltenden Ordners abhängt. Ich denke, der enthaltende Ordner muss eine Ausführungsberechtigung haben – stimmt das? Ich gehe davon aus, dass die erforderliche Verzeichnisberechtigung auch bis zu / reicht – wahr?

Es sieht für mich so aus, als hätte der enthaltene Ordnerbaum der notierten Datei Ausführungsberechtigungen:

[[email protected] ~]$ ls -ld /a/b/c/                                                                                    
drwxrwxrwx    2 user   user       36864 Mar  5 17:50 /a/b/c/
[[email protected] ~]$ ls -ld /a/b/           
drwxrwxr-x    4 user   user        4096 Sep 22  2017 /a/b/
[[email protected] ~]$ ls -ld /a/                
drwxrwxr-x    9 user   user        4096 Sep 15  2017 /a/
[[email protected] ~]$ ls -ld /     
drwxr-xr-x   24 root   root           0 Aug 24 10:48 /
[[email protected] ~]$ whoami
user

Soweit ich das oben erkennen kann, hat jedes Verzeichnis im relevanten Baum Ausführungsberechtigungen. Zuerst war ich misstrauisch, ob es mit / zu tun hat im Besitz von root , hat aber die Ausführungsberechtigung für „andere“. Plus, wenn es Probleme im Zusammenhang mit / gab im Besitz von root , stelle ich mir vor, ich hätte Probleme, Dateien irgendwo im Dateisystem als ein anderer Benutzer als root zu schreiben , aber das ist nicht der Fall.

Kann sich jemand andere Gründe vorstellen/identifizieren, warum die angegebene Datei als schreibgeschützt gilt?

Akzeptierte Antwort:

Zuerst – Sie sind mit unveränderlichem Flag gesetzt

chattr -i yourfilename

Wenn das unveränderliche Flag gesetzt ist, können Sie die Datei nicht ändern. Denken Sie daran, dass Berechtigungen dieses Verhalten nicht überschrieben haben!

Zweitens Überprüfen Sie, ob das Verzeichnis, in dem sich die Datei befindet, auf einer anderen Festplatte oder Partition eingehängt ist , als schreibgeschützt, geben Sie dafür einfach ein:

mount 

(ohne Argumente)

Wenn Sie so etwas wie Ihr Verzeichnis als schreibgeschützt gemountet sehen, gibt es den Grund! Remounten Sie es als Read-Write, um Glück zu haben!

Dritter – und am häufigsten , führen Sie gerade ein Dateisystem mit Fehlern aus , um das zu korrigieren, müssen Sie so viel wie möglich sichern, neu starten, sich dann im Einzelmodus anmelden und Folgendes ausführen:

mount #To determine how the partition is mounted
mount -o remount,ro /dev/sd(yourpartition) directory
fsck.ext4 /dev/sd(yourpartition)

(ext4 muss möglicherweise auf Ihren Partitionstyp geändert werden)

Viel Glück!

Verwandte:Benutzer- und Kernelzeit eines laufenden Prozesses abrufen?
Linux
  1. So verschieben Sie eine Datei unter Linux

  2. Was ist ein Linux-Benutzer?

  3. Eine Einführung in die Überwachung von Linux-Benutzerkonten

  4. Linux – Alles ist eine Datei?

  5. Linux-su-Befehl

Gzip-Befehl unter Linux

Su-Befehl in Linux (Benutzer wechseln)

ID-Befehl unter Linux

Linux-Dateiberechtigungen:Alles, was Sie wissen müssen

Beispiele für chown-Befehle unter Linux

Was ist die Datei /etc/passwd unter Linux?