Da postagem Por que a rm pode remover arquivos somente leitura? Eu entendo que rm
só precisa de permissão de gravação no diretório para remover o arquivo. Mas acho difícil digerir o comportamento em que podemos excluir facilmente um arquivo que possui e agrupa diferentes.
Eu tentei o seguinte
mtk: my username
abc: criou um novo usuário
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Eu estava pensando que isso não deveria ter sido permitido. Um usuário deve poder excluir apenas arquivos de sua propriedade? Alguém pode esclarecer por que isso é permitido? e qual é a maneira de evitar isso? Só posso pensar em restringir a permissão de gravação do diretório pai para desabilitar exclusões de arquivos surpresas.
-rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/foo
como meu usuário comum (/tmp
é persistente) porque posso escrever? No entanto, eu não posso.me
/you
entre em um foco mais claro se você tiver a hipótese de que o usuário (aquele que não possui o arquivo) criou o link. Pronomes são difíceis de usar; digamos que Al cria/home/al/file1
, e Bob, que tem acesso de execução (e talvez leitura)/home/al
, vincula o arquivo/home/bob/als_file
. Bob deve ser impedido de remover um link que ele criou? E Al deve ter permissão para excluir (desvincular)/home/bob/als_file
quando ele não tem acesso de gravação/home/bob
? Esta estrada leva ao caos.Para remover um arquivo, você só precisa gravar no diretório em que o arquivo está.
Se você não gostar disso, poderá definir o bit "pegajoso" via
chmod +t dir
se estiver em um sistema operacional recente (esse recurso foi introduzido por volta de 1986 no SunOS).Se você deseja ser mais refinado, precisa de um sistema de arquivos com uma implementação ACL moderna como o ZFS. As ACLs padrão do NFSv4 baseadas em NTFS incluem suporte para permissões de exclusão específicas de arquivo por usuário e uma permissão "delete_child" para diretórios.
fonte
t
bit, você precisa ser o proprietário do diretório. E se você possui o diretório, sempre pode remover arquivos, independentemente de ot
bit estar definido ou não. Se você vincular um arquivo ao diretório de outra pessoa, você deve estar preparado para que outra pessoa possa removê-lo. Uma alternativa seria criar primeiro um subdiretório seu e adicionar seu arquivo lá, pois o proprietário não seria capaz de remover esse subdiretório se ele não estiver vazio.rm
é uma operação no diretório, não no arquivo. Um arquivo é removido quando a última referência a ele é removida, mas tecnicamente isso é um efeito colateral.A lógica é semelhante à de uma casa: o proprietário ou inquilino decide quais convidados serão expulsos, independentemente de quem é o proprietário. Além disso, o convidado despejado que é bem-vindo em outra casa (tem outro link no diretório de outra pessoa) não congelará até a morte lá fora.
fonte