„sudo chmod +w /etc/hosts“ kann nicht ausgeführt werden

„sudo chmod +w /etc/hosts“ kann nicht ausgeführt werden

Ich bin als Benutzer xyz bei meiner Remote-VM (der die ausgeht ESXi) angemeldet. Ich wollte meine ändern, /etc/hostsum einige Netzwerknamen hinzuzufügen, die standardmäßig nicht sichtbar waren.

Ich habe zuerst versucht zu rennen

sudo vi /etc/hosts

aber als ich reinkam vi, wurde mir immer noch angezeigt, dass die Datei schreibgeschützt sei. Hier sind die Berechtigungen:

>ls -l /etc/hosts
-rw-r--r-- 1 root root 416 2013-06-19 08:08 /etc/hosts

Mir ist auch aufgefallen, dass fast jede andere Datei in ein von /etchat , nur hat . Beispiel:lsattr-----------------e-hosts----i------------e-

>lsattr /etc
...
-----------------e- ./python
----i------------e- ./hosts
...

Dann habe ich es versucht chmodund hier ist das Ergebnis:

>sudo chmod +w /etc/hosts
chmod: changing permissions of `/etc/hosts': Operation not permitted

Ich fand das komisch, weil root (zu dem ich wechsle, wenn ich sudo) eigentlich alles machen können sollte. Meine sudoersDatei sieht ganz normal aus:

  1 # /etc/sudoers
  2 #
  3 # This file MUST be edited with the 'visudo' command as root.
  4 #
  5 # See the man page for details on how to write a sudoers file.
  6 #
  7 
  8 Defaults        env_reset
  9 
 10 # Host alias specification
 11 
 12 # User alias specification
 13 
 14 # Cmnd alias specification
 15 
 16 # User privilege specification
 17 root    ALL=(ALL) ALL
 18 
 19 # Allow members of group sudo to execute any command after they have
 20 # provided their password
 21 # (Note that later entries override this, so you might need to move
 22 # it further down)
 23 %sudo ALL=(ALL) ALL
 24 #
 25 #includedir /etc/sudoers.d
 26 
 27 # Members of the admin group may gain root privileges
 28 %admin ALL=(ALL) ALL

Ich suche nach einer Erklärung, warum dies passiert und wie man es umgehen kann.

Antwort1

Das Besondere an dieser Ausgabe ist i, dassunveränderlichAttribut.

Die Datei wurde markiertunveränderlich.

Dies bedeutet, dass es von keinem Benutzer, auch nicht von Root, geändert werden kann. Root kann die Attribute weiterhin ändern und das unveränderliche Attribut entfernen, muss dies jedoch tun, bevor Änderungen an der Datei vorgenommen werden, im Gegensatz zu Standardberechtigungen für das Nichtschreiben einer Datei, die Root einfach ignorieren kann.

Diese Attribute sind, soweit ich weiß, nur auf ext[234]-Dateisysteme anwendbar.

Sie können die Manpage für chattr sehen,

$man chattr

um eine vollständige Liste und Beschreibung der verfügbaren Attribute anzuzeigen.

Das einzige, das ich jemals tatsächlich verwendet habe, ist i. Aber einige der anderen sind:

A: atime remains unmodified when accessed
a: can only be opened for writing in append-only mode
c: compressed automatically
j: all data is written to the journal before being written to the file
s: blocks are zeros when file is deleted
u: contents of file are saved when file is deleted for later undelete

Es gibt noch weitere Attribute, diese sind jedoch eher esoterisch und viele weitere Informationen dazu finden Sie auf der Manpage von chattr.

Antwort2

Ich habe die erweiterten Attribute geändert, um sie loszuwerden, iund dann war alles in Ordnung:

>sudo chattr -i /etc/hosts

Ich hätte aber trotzdem gerne eine Erklärung, wie die lsattrsAusgabe gelesen wird, einschließlich des Attributs, das ich geändert habe.

verwandte Informationen