Não é possível executar 'sudo chmod +w /etc/hosts'

Não é possível executar 'sudo chmod +w /etc/hosts'

Estou conectado à minha VM remota (esgotando ESXi) como usuário xyz. Eu queria mudar /etc/hostspara adicionar alguns nomes de rede que não eram visíveis por padrão.

Eu primeiro tentei correr

sudo vi /etc/hosts

mas quando entrei vi, ainda me dizia que o arquivo era somente leitura. Aqui estão os privilégios:

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

Também notei que quase todos os outros arquivos /etcpossuem um lsattrof -----------------e-, hostsapenas ----i------------e-. Por exemplo:

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

Então tentei chmode aqui está o que consegui:

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

Eu pensei que era estranho porque o root (para o qual eu mudei quando eu sudo) deveria ser capaz de fazer qualquer coisa. Meu sudoersarquivo parece bastante comum:

  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

Estou procurando uma explicação de por que isso está acontecendo e como contornar isso.

Responder1

O atributo específico nesta edição é i, oimutávelatributo.

O arquivo foi marcadoimutável.

Isso significa que é imutável por qualquer usuário, incluindo root. O root ainda pode alterar os atributos e remover o atributo imutável, mas deve fazê-lo primeiro antes de fazer alterações no arquivo, ao contrário das permissões padrão de não gravação em um arquivo que o root pode simplesmente ignorar.

Até onde eu sei, esses atributos são aplicáveis ​​apenas a sistemas de arquivos ext[234].

Você pode ver a página de manual do chattr,

$man chattr

para ver uma lista completa e uma descrição dos atributos disponíveis.

O único que realmente usei foi o i. Mas alguns dos outros incluem:

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

Existem outros atributos, mas eles são um tanto esotéricos e muito mais informações podem ser encontradas sobre eles na página de manual do chattr.

Responder2

Mudei os atributos estendidos para me livrar do ie então fiquei bem:

>sudo chattr -i /etc/hosts

Mas ainda gostaria de uma explicação de como ler lsattrsa saída, incluindo o atributo que alterei.

informação relacionada