Como corretamente respondido por David Foerster , os direitos para manipular arquivos e diretórios dependem da permissão do contendo o diretório .
Disse que, existe um truque (sujo?) para evitar que um diretório possa ser deletado mesmo se você tiver o direito no arquivo: coloque nele um arquivo (possivelmente oculto), e faça isso e o diretório não gravável. Veja este exemplo:
[romano:~] mkdir tmp/test; cd tmp/test
[romano:~/tmp/test] % mkdir subdir_e subdir_f
[romano:~/tmp/test] % touch subdir_f/.hiddenfile
Eu criei dois subdiretórios, um vazio e outro com um arquivo oculto.
[romano:~/tmp/test] % chmod 555 subdir_f/.hiddenfile subdir_f subdir_e
[romano:~/tmp/test] % sudo chown root subdir_f/.hiddenfile subdir_f subdir_e
Eu faço este diretório e o arquivo oculto não-gravável, alterando a permissão e dando a propriedade para root
(caso contrário, eu simplesmente posso alterar a permissão de volta). Vamos ver o status:
[romano:~/tmp/test] % ls -la
total 16
drwxrwxr-x 4 romano romano 4096 oct 23 16:37 .
drwxr-xr-x 6 romano romano 4096 oct 23 16:31 ..
dr-xr-xr-x 2 root romano 4096 oct 23 16:37 subdir_e
dr-xr-xr-x 2 root romano 4096 oct 23 16:37 subdir_f
Observe que eu possuo e tenho direitos de gravação para .
, que é meu diretório atual, portanto, se eu fizer isso:
[romano:~/tmp/test] % rmdir subdir_e
é bem-sucedido, porque eu posso modificar .
como eu gosto. Mas se eu tentar o mesmo com o subdiretório não vazio:
[romano:~/tmp/test] % rmdir subdir_f
rmdir: failed to remove ‘subdir_f’: Directory not empty
[romano:~/tmp/test] 1 % rm -rf subdir_f
rm: cannot remove ‘subdir_f/.hiddenfile’: Permission denied
[romano:~/tmp/test] 1 % chown romano subdir_f
chown: changing ownership of ‘subdir_f’: Operation not permitted
... Preciso de privilégios de root para removê-lo agora.