Eu me deparei com um surpreendente (para mim) comportamento de permissão no FreeBSD. Digamos que estou operando como usuário não root . Crio um arquivo, defino sua permissão como somente leitura e, em seguida, tento gravar nele:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
Por enquanto, tudo bem. Agora eu faço o mesmo que root e ele grava no arquivo:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
É um bug ou comportamento pretendido? Posso assumir com segurança que isso funcionaria assim em qualquer Unix e Linux?
files
permissions
root
arrowd
fonte
fonte
CAP_DAC_OVERRIDE
pode fazer isso. Em quase todos os sistemas Linux, isso significa que o root pode fazer isso, sendo intencional. Não posso falar pela parte do FreeBSD, mas imagino que eles tenham uma configuração semelhante.chmod
não poderá gravar no arquivo.touch somefile; chmod 0000 somefile; chmod 0644 somefile
como um usuário normal.Respostas:
É normal
root
poder substituir permissões dessa maneira.Outro exemplo é
root
a capacidade de ler um arquivo sem acesso de leitura:Alguns sistemas têm o conceito de arquivos imutáveis . por exemplo, no FreeBSD:
Agora nem mesmo é
root
possível gravar no arquivo. Mas, é claro,root
pode remover a bandeira:Com o FreeBSD, você pode dar um passo adiante e definir uma flag de kernel para impedir a
root
remoção da flag:Agora ninguém, nem mesmo
root
pode mudar este arquivo.(O sistema precisa ser reiniciado para reduzir o nível de segurança).
fonte
chattr +i tst
define atributo imutável .Sim, isso é muito normal. root não tem limites de leitura / gravação (com muito pouca exceção), porque ele é a raiz.
fonte