Por que rodar um caminho de diretório como um comando retornará “permissão negada” e não “comando não encontrado”? [duplicado]

1

Eu sou uma redhat box e notei que, se eu acidentalmente digitar um caminho dir sem cd na frente dele, receberei um /path/to/dir/: Permission denied. ; no entanto, eu esperaria que ele dissesse /path/to/dir/: Command not found . Como se eu digitasse bobagens como:

$ sldkfjsd
sldkfjsd: Command not found.

Qual é o propósito disso e o que aconteceria se eu fosse executar um dir como um comando como superusuário (não tenho sudo access)?

    
por Aaron 21.02.2013 / 01:29

2 respostas

0

É uma permissão negada porque você não tem permissão para executar um diretório dessa maneira. Normalmente, quando você acabou de digitar o nome de algum arquivo na CLI sem mais nada, isso significa que você quer executá-lo. Mas para diretórios as permissões de execução têm um significado diferente, por isso você não tem permissões para executá-las.

Na verdade, a execução de um diretório geralmente é necessária para listar seu índice de arquivos, mas você não pode executá-lo como um arquivo executável binário.

f.e. existe um executável chamado /bin/ls , então se você digitar /bin/ls na CLI, ele irá chamar o executável e executá-lo. Agora, se você tentar apenas digitar /bin (o diretório), o Bash fará o mesmo e tentará chamá-lo como um executável, mas você não terá permissão para executá-lo como um executável, porque é um diretório.

    
por 21.02.2013 / 02:33
0

Da mesma forma como se você tentasse executar uma imagem PNG ou qualquer outra coisa que não fizesse sentido executar, isso não é permitido. No caso de arquivos, um arquivo poderia ser tornado executável por bits de permissão, pois pode conter um programa (todos os comandos são arquivos regulares que contêm código de máquina e são executáveis). Nunca fará sentido executar um diretório ou um disco rígido. Assim, nenhuma permissão.

    
por 21.02.2013 / 04:05

Tags