Por que as permissões de execução são necessárias para renomear arquivos em um diretório?

4

Digamos que eu seja o proprietário de um diretório e tenha permissões de leitura e gravação, mas não permissões de execução, em que a estrutura do diretório é assim:

x/           (drw-r--r--)
    y        (-rw-r--r--)
    z        (-rw-r--r--)

Eu sei que sem permissões de execução, eu não posso cd para o diretório, mas eu pensei que renomear arquivos dentro do diretório contaria como "escrita" para o diretório. Assim, me surpreendeu que o seguinte comando deu uma permissão negada.

mv x/y x/w

Por que o mv requer permissões de execução no diretório x ? É algo especial sobre o comando mv ? O mv está usando cd internamente ou algo assim?

    
por AmadeusDrZaius 21.09.2014 / 03:54

1 resposta

4

Depois de analisar esta resposta a uma pergunta relacionada, acho que entendi.

Um diretório é uma lista de arquivos, e "executar" esse diretório significa seguir os links na lista de diretórios para os arquivos em si. Portanto, como não tenho permissões de execução em x , não consigo resolver o caminho x/y para o arquivo real y no comando mv x/y x/w . (Para obter o arquivo real y , a entrada de diretório para y in x deve ser seguida, o que é parte do que "executar" x significa.)

No entanto, se concedermos ao usuário a permissão de executar, mas não de gravar, em x , poderemos copiar um arquivo de x para fora de x , da seguinte forma:

chmod u+x-w x
cp x/y y
    
por 21.09.2014 / 04:37