
Abaixo mostra um arquivo, /tmp/testfile
, de propriedade deusuário1com grupo alterado pararodaisso também incluiusuário2. O arquivo tem rw
permissão para o grupo. Então, nenhum membro do grupo deveria poder excluí-lo? O exemplo de saída abaixo mostra queusuário2não é possível excluir o arquivo. Por que?
[user2@files ~]$ ls -l /tmp/testfile
-rw-rw-r-- 1 user1 wheel 0 Jul 18 18:54 /tmp/testfile
[user2@files ~]$ groups
user2 wheel
[user2@files ~]$ rm /tmp/testfile
rm: cannot remove `/tmp/testfile': Operation not permitted
Responder1
Primeiro, você está vendo as permissões erradas. Ao mover/renomear/excluir um arquivo, você está apenas modificando oDiretório Parental– as próprias permissões do arquivo não são verificadas. Você remove apenas 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 contido nele. É claro que isso tornaria mais fácil (bem, ainda mais fácil) criar problemas para outros usuários, portanto, /tmp
sempre tem o modo "fixo", também conhecido como "exclusão restrita" definido ( o+t
). Com este modo definido, apenas o proprietário do arquivo pode mover ou excluir arquivos nesse diretório, independentemente de quaisquer permissões.
(No GNU coreutils, a chmod(1)
página de manual tem uma seção sobre o"sinalizador de exclusão restrita ou sticky bit".)