removendo a permissão de escrita não impede que o root grave no arquivo

25

Acabei de notar na minha máquina Ubuntu (sistema de arquivos ext3) que a remoção de permissões de gravação de um arquivo não impede que o root grave nele.

Esta é uma regra geral das permissões de arquivo do UNIX? Ou específico para o Ubuntu? Ou uma configuração incorreta na minha máquina?

# touch abc
# chmod ugo-w abc
# python
Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> open('abc','w').write('AAA\n')
>>> 
# cat abc
AAA

Escrever no arquivo falha (como esperado) se eu fizer isso da minha conta de usuário normal.

  1. Esse comportamento é normal?

  2. Existe uma maneira de impedir que o root grave acidentalmente em um arquivo? (De preferência usando mecanismos normais do sistema de arquivos, não o AppArmor, etc.)

Por favor, me ensine sobre algo que eu definitivamente não entendo.

NOTA: Eu entendo que root tem controle total sobre o sistema e pode, por exemplo, alterar as permissões em qualquer arquivo. Minha pergunta é se as permissões atualmente configuradas são aplicadas no código em execução como root . A ideia é que o usuário root evite gravar acidentalmente em um arquivo.

NOTA: Eu também entendo que um não deve estar logado como root para operações normais. Eu só notei esse comportamento e estou perguntando sobre isso.

    
por laramichaels 03.02.2010 / 01:11

4 respostas

37

1) Este é um comportamento normal. root tem acesso rw em todos os arquivos em todos os momentos.

2) Você pode proteger um arquivo até mesmo da raiz (ação não deliberada, mas acidental, de qualquer maneira) usando

chattr +i filename.ext

Isso é "alterar atributos adicionar imutável". Para remover a proteção:

chattr -i filename.ext

dê uma olhada em man chattr para mais informações

    
por 03.02.2010 / 01:29
2
  1. Sim, isso é normal. Raiz é deus.

  2. Sim, existem maneiras de impedir que o root substitua arquivos.

    • Defina o bit imutável com chattr ( +i sets, -i unsets). Requer acesso root, funciona apenas em ext2 / ext3 (presumivelmente ext4 também), mas é prático.
    • Não execute aplicativos como root. Não privs root, não sobrescrever arquivos. Use sudo para acessar as funções do sistema.
    • Desmonte o sistema de arquivos. Nenhum fs montado, nenhum arquivo de sobrescrita. [*]
    • Desligue o computador. Sem eletricidade, sem sobrescrever arquivos.

Estes métodos seguem logicamente do # 1. Como você pode ver, os dois últimos métodos geralmente não são úteis, da mesma forma que proteger o Windows contra vírus desconectando a rede geralmente não é útil. É por isso que o root é perigoso. [+]

[*] Descontando a possibilidade de escrever "acidentalmente" diretamente no dispositivo de bloco, é claro. Sim, o root pode fazer isso. Sim, você pode evitar isso: desconecte o dispositivo.

[+] É também de onde vêm esses mitos. Eles não são todos mitos.

    
por 03.02.2010 / 01:30
2

Você também pode restringir o acesso a arquivos para o usuário root, usando o kernel do Linux "Recursos": link

Existe também a possibilidade de usar o SE-Linux ou algum outro patch no kernel para tornar alguns arquivos imutáveis mesmo para o root.

    
por 04.02.2010 / 15:44
0

Eu acho que enquanto o root for o superusuário, e ele puder fazer qualquer coisa, você não poderá remover nenhuma permissão dele, mesmo que você seja a raiz. É suposto ser a vontade da raiz impedir-se de fazer ou não uma operação (como gravar em um arquivo ou abrir um aplicativo).

Portanto, não, é provável que você só desative a conta do root para evitar um mau uso dela.

Atenciosamente

[nota para si: você será humilde ... talvez você esteja errado]

    
por 03.02.2010 / 01:22