No se puede ejecutar 'sudo chmod +w /etc/hosts'

No se puede ejecutar 'sudo chmod +w /etc/hosts'

He iniciado sesión en mi máquina virtual remota (me estoy quedando sin ESXi) como usuario xyz. Quería cambiar mi /etc/hostspara agregar algunos nombres de red que no eran visibles de forma predeterminada.

Primero intenté correr

sudo vi /etc/hosts

pero cuando entré vi, todavía me decía que el archivo era de solo lectura. Aquí están los privilegios:

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

También noté que casi todos los demás archivos /etctienen una lsattrextensión de -----------------e-, solo hoststienen ----i------------e-. P.ej:

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

Luego lo intenté chmody esto es lo que obtuve:

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

Pensé que era extraño porque root (al que me cambian cuando lo hago sudo) debería poder hacer cualquier cosa. Mi sudoersarchivo parece bastante normal:

  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

Estoy buscando una explicación de por qué sucede esto y cómo solucionarlo.

Respuesta1

El atributo específico en este número es i, elinmutableatributo.

El archivo fue marcadoinmutable.

Esto significa que ningún usuario, incluido el root, puede modificarlo. Root aún puede cambiar los atributos y eliminar el atributo inmutable, pero debe hacerlo primero antes de realizar cambios en el archivo, a diferencia de los permisos estándar de no escritura en un archivo que root puede simplemente ignorar.

Hasta donde yo sé, estos atributos solo son aplicables a sistemas de archivos ext[234].

Puedes ver la página de manual de chattr,

$man chattr

para ver una lista completa y una descripción de los atributos disponibles.

El único que he usado es i. Pero algunos de los otros incluyen:

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

Hay otros atributos, pero son algo esotéricos y se puede encontrar mucha más información sobre ellos en la página de manual de chattr.

Respuesta2

Cambié los atributos extendidos para deshacerme de ellos iy luego estuve bien:

>sudo chattr -i /etc/hosts

Pero aún así me gustaría recibir una explicación sobre cómo leer lsattrsel resultado, incluido el atributo que cambié.

información relacionada