mv arquivo sem permissão de gravação no arquivo de origem

5

Acabei de perceber que posso mover um arquivo que não possuo e não tenho permissões de gravação. Eu tenho permissões de gravação para o diretório, então eu estou supondo que é por isso que eu poderia movê-lo, mas neste caso, existe alguma maneira de proteger o arquivo de origem?

As permissões para o arquivo são as seguintes:

cgi-bin> ls -al 

drwxrwxrwx   3 voyager  endeavor     512 Feb  1 10:45 .
drwxrwxrwx   6 voyager  endeavor     512 Feb  1 09:38 ..
-rwxr-xr-x   1 voyager  endeavor   22374 Feb  1 10:45 webvoyage_link.cgi

cgi-bin> whoami
moorc

cgi-bin> groups
lrsn endeavor

cgi-bin> rm webvoyage_link.cgi
rm: webvoyage_link.cgi: override protection 755 (yes/no)? yes

Este último é uma grande surpresa para mim. Como posso excluir um arquivo ao qual não tenho acesso. Obviamente, está faltando alguma coisa.

    
por Mr Moose 01.02.2012 / 05:38

1 resposta

12

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.

    
por 01.02.2012 / 06:12