É normal que root
seja capaz de substituir as permissões dessa maneira.
Outro exemplo é root
sendo capaz de ler um arquivo sem acesso de leitura:
$ echo hello > tst
$ chmod 0 tst
$ ls -l tst
---------- 1 sweh sweh 6 Aug 16 15:46 tst
$ cat tst
cat: tst: Permission denied
$ sudo cat tst
hello
Alguns sistemas têm o conceito de arquivos imutáveis . por exemplo, no FreeBSD:
# ls -l tst
-rw-r--r-- 1 sweh sweh 6 Aug 16 15:50 tst
# chflags simmutable tst
# echo there >> tst
tst: Operation not permitted.
Agora, até root
não pode gravar no arquivo. Mas, é claro, root
pode remover o sinalizador:
# chflags nosimmutable tst
# echo there >> tst
# cat tst
hello
there
Com o FreeBSD, você pode ir além e definir um sinalizador de kernel para impedir que root
remova o sinalizador:
# chflags simmutable tst
# sysctl kern.securelevel=1
kern.securelevel: -1 -> 1
# chflags nosimmutable tst
chflags: tst: Operation not permitted
Agora ninguém, nem mesmo root
, pode alterar este arquivo.
(O sistema precisa ser reinicializado para reduzir o nível de segurança).