O sinalizador somente ( chattr +a
) impede a remoção do diretório, bem como arquivos e diretórios criados diretamente dentro desse diretório:
Crie um diretório e arquivos de teste:
# mkdir /tmp/foo
# chattr +a /tmp/foo
Esse diretório não pode ser excluído:
# rmdir /tmp/foo
rmdir: failed to remove ‘/tmp/foo’: Operation not permitted
Agora crie arquivos e diretório dentro dele:
# touch /tmp/foo/bar
# mkdir /tmp/foo/baz
Vamos inspecionar isso:
# lsattr -d /tmp/foo /tmp/foo/ba*
-----a-------e-- /tmp/foo
-------------e-- /tmp/foo/bar
-------------e-- /tmp/foo/baz
Tente apagar coisas:
# rm /tmp/foo/bar
rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted
# rmdir /tmp/foo/baz
rmdir: failed to remove ‘/tmp/foo/baz’: Operation not permitted
rm -Rf /tmp/foo
rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted
rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted
Por fim, o subdiretório secundário e os arquivos nos subdiretórios não são protegidos :
# mkdir /tmp/foo/baz/bat
# touch /tmp/foo/baz/baff
# rm --verbose -Rf /tmp/foo/baz
removed directory: ‘/tmp/foo/baz/bat’
removed ‘/tmp/foo/baz/baff’
rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted
Novamente, observe que somente /tmp/foo
tinha o sinalizador de acréscimo:
# lsattr -d /tmp/foo /tmp/foo/baz
-----a-------e-- /tmp/foo
-------------e-- /tmp/foo/baz