Primeiro, você está olhando para as permissões erradas. Quando você move / renomeia / apaga um arquivo, apenas modifica o diretório pai - as permissões do próprio arquivo não são verificadas. Você só remove uma entrada da lista de arquivos do diretório. Portanto, você deve verificar as permissões do diretório pai (neste caso, /tmp
).
$ ls -ld /tmp
drwxrwxrwt 15 root root 460 Jul 19 15:18 /tmp/
Em segundo lugar, /tmp
é especial. Em praticamente todos os sistemas, é gravável por qualquer pessoa ( ugo=rwx
), então, à primeira vista, parece que qualquer um poderia renomear ou excluir qualquer arquivo nele. Isso, é claro, tornaria mais fácil (bem, ainda mais fácil) criar problemas para outros usuários, portanto, /tmp
sempre tem o modo "sticky" ou "exclusão restrita" definido ( o+t
). Com esse modo definido, somente o proprietário do arquivo pode mover ou excluir arquivos nesse diretório, independentemente de quaisquer permissões.
(No GNU coreutils, a página de manual chmod(1)
tem uma seção sobre o " sinalizador de exclusão restrita ou bit pegajoso ".)