Mover ( mv
) é essencialmente uma cópia de preservação de atributo seguida por uma exclusão ( rm
), no que diz respeito às permissões. 1 Desvincular ou remover um arquivo significa remover seu diretório entrada de seu diretório contido. Você está gravando no diretório, não no próprio arquivo, portanto, não são necessárias permissões de gravação no arquivo.
A maioria dos sistemas suporta a semântica do bit fixo nos diretórios ( chmod +t dir/
), que, quando definido, permite que os proprietários de arquivos removam arquivos dentro desse diretório. Definir o bit fixo em cgi-bin/
significaria que moorc
não pode mais desvincular arquivos em cgi-bin
que pertencem a voyager
.
1 Em geral, quando o destino está no mesmo sistema de arquivos da origem, não há cópia física. Em vez disso, um novo link é feito para o arquivo no diretório de destino, mas o mesmo conceito geral ainda sustenta que o próprio arquivo não muda.
Para obter mais informações, consulte este artigo como as permissões de arquivos e diretórios (incluindo o bit adesivo) afetam as chamadas do sistema . Postscript
Eu encontrei uma analogia divertida que eu realmente gostei em um comentário @JorgWMittag em outra pergunta neste site.
Trecho
It is identical to how an actual, "real-life" directory works, which is why it's called "directory", and not, for example, "folder", which would behave quite differently. If I want to delete someone from my phone directory, I don't go to her house and kill her, I simply take a pen and strike through her number. IOW: I need write access to the directory, and no access to her.
A analogia se quebra um pouco se você tentar esticá-la, porque não há uma maneira eficaz de descrever a situação em que a implementação do sistema de arquivos libera automaticamente os blocos de disco de um arquivo quando o número de entradas de diretório apontarem para zero. de suas alças abertas estão fechadas.