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

2

Estou logado em minha VM remota (ficando sem ESXi ) como usuário xyz. Eu queria alterar meu /etc/hosts para adicionar alguns nomes de rede que não eram visíveis por padrão.

Primeiro tentei executar

sudo vi /etc/hosts

mas quando entrei em vi , ainda estava me dizendo que o arquivo era somente de 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 percebi que quase todos os outros arquivos em /etc têm lsattr de -----------------e- , somente hosts tem ----i------------e- . Por exemplo:

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

Então eu tentei chmod e aqui está o que eu recebi:

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

Eu achei estranho porque o root (ao qual eu troquei quando eu sudo ) deveria ser capaz de fazer qualquer coisa. Meu arquivo sudoers parece bem 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 do porquê isso está acontecendo e como resolvê-lo.

    
por amphibient 08.10.2013 / 17:37

2 respostas

3

O atributo específico desta edição é i , o atributo imutável .

O arquivo foi marcado como imutável .

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

Esses atributos são aplicáveis apenas aos sistemas de arquivos ext [234], até onde eu sei.

Você pode ver a página man do chattr,

$man chattr

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

O único que eu já usei é 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 pouco esotéricos e muito mais informação pode ser encontrada neles na página man do chattr.

    
por 08.10.2013 / 19:12
2

Alterei os atributos estendidos para me livrar do i e, em seguida, fiquei bem:

>sudo chattr -i /etc/hosts

Mas ainda gostaria de uma explicação sobre como ler lsattrs output, incluindo o atributo que eu alterei.

    
por 08.10.2013 / 18:03