Como criar um arquivo que nem o usuário root pode excluí-lo

13

Como criar um arquivo que nem o usuário root pode excluí-lo?

Kumar
fonte
9
Embora a resposta do tante deva cobrir sua pergunta, um meta-comentário é: seria muito mais fácil responder se você incluísse sua justificativa na sua pergunta. Talvez haja uma solução para o seu problema que não consiste em impedir a exclusão do (s) arquivo (s)?
Fschmitt 27/09/10

Respostas:

33

Resposta simples: você não pode, o root pode fazer tudo.

Você pode definir o atributo "i" com o chattr (pelo menos se você estiver no ext {2,3,4}), que torna um arquivo inalterável, mas o root pode apenas desarmar o atributo e excluir o arquivo de qualquer maneira.

Mais complexo (e solução hackish feia): coloque o diretório que você deseja inalterável para root no servidor remoto e monte-o via NFS ou SMB. Se o servidor não oferecer permissões de gravação que bloqueiem a conta raiz local. É claro que a conta raiz local poderia simplesmente copiar os arquivos localmente, desmontar o material remoto, colocar a cópia no lugar e alterar isso.

Você não pode impedir que o root exclua seus arquivos. Se você não pode confiar na sua raiz para manter os arquivos intactos, você está tendo um problema social, não técnico.

tante
fonte
Esta pergunta é feita por um entrevistador para mim. Não sei a resposta Eu perguntei a ele por resposta. Ele disse que é possível e encontre a solução sozinho.
Kumar
12
um dia você também será um entrevistador e poderá fazer suas próprias perguntas sem sentido: "o root pode criar um arquivo tão grande que ele não mvconsegue?" (que é uma piada coxo baseado em teosofia cristã, e uma piada terrível se você não estiver familiarizado com o campo)
msw
5
@ msw: Pode-se argumentar que é uma piada terrível, mesmo se você estiver familiarizado com o campo.
Matthew Crumley
Crumley @matthew: culpado da acusação :)
msw
@ msw: Acabei de perceber que você até admitiu que era uma piada esfarrapada. E FWIW, eu gosto de (algumas) piadas esfarrapadas, então eu realmente gostei. Isso está ficando muito longe off topic embora :)
Matthew Crumley
34

Coloque em um CD-ROM! ;)

(isso deve ser um comentário, mas não posso fazer comentários ...)

Laurent
fonte
Há um senso por trás do limite de reputação para comentários ;-) Apenas um pequeno impulso instigante. sem chama destinados ;-)
echox
6
+1 Mas isso funcionaria.
Richard Holloway
1
Esta e a resposta de @mouviciel é a única solução correta. Até o todo-poderoso @root ainda está vinculado pelas regras definidas pelo hardware.
Lie Ryan
15

Coloque seu arquivo em um sistema de arquivos somente leitura. Pode ser um FS remoto onde o root não é mais root, um CD-ROM ou um dispositivo removível que pode ser protegido contra gravação, por exemplo, um cartão SD.

mouviciel
fonte
2

Há muito tempo, escrevi um patch do kernel (para 2.2.ancient) em que a tentativa de excluir um arquivo chamado SELFDESTRUCT interrompeu o processo de chamada. Isso é protegido contra "rm -rf *" acidental.

pjc50
fonte
há muito tempo e longe. Como você realmente fez isso (comandos)?
Michael Durrant
1

Você pode usar chattr +ipara tornar um arquivo imutável.

É claro que um usuário experiente com acesso root ainda pode usar chattr -ipara remover o atributo imutável e excluir o arquivo, mas também pode desfazer qualquer outra tentativa de bloquear o acesso listado aqui.

Eu diria que o chattr é a maneira correta do Unix de fazer isso.

jeremyjjbrown
fonte