He iniciado sesión en mi máquina virtual remota (me estoy quedando sin ESXi
) como usuario xyz. Quería cambiar mi /etc/hosts
para 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 /etc
tienen una lsattr
extensión de -----------------e-
, solo hosts
tienen ----i------------e-
. P.ej:
>lsattr /etc
...
-----------------e- ./python
----i------------e- ./hosts
...
Luego lo intenté chmod
y 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 sudoers
archivo 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 i
y luego estuve bien:
>sudo chattr -i /etc/hosts
Pero aún así me gustaría recibir una explicación sobre cómo leer lsattrs
el resultado, incluido el atributo que cambié.