O caso mais simples é o de um executável binário como gzip
. Primeiro, localizamos o executável:
$ which gzip
/bin/gzip
Em seguida, analisamos os atributos deste arquivo:
$ ls -l /bin/gzip
-rwxr-xr-x 1 root root 98240 oct 27 2014 /bin/gzip
Os três xs nos dizem que o arquivo pode ser executado pelo proprietário (o primeiro root
) ou qualquer pessoa no grupo root
(segundo root
) e qualquer outra pessoa, respectivamente. Então, seu usuário tem permissão para executar o programa.
No entanto, seu executável pode ser um arquivo de script que chama outros executáveis dentro dele. Você pode executar o script, mas não os programas chamados dentro dele. Não há como determinar se o usuário tem permissão para fazer isso, a não ser tentar de verdade.
Depois, há casos especiais como shutdown
- este é realmente um link simbólico para um utilitário central chamado systemctl
, que tem seus próprios mecanismos para determinar se você pode chamá-lo e pedir seu sudo senha se você não fizer isso, por exemplo.
(Sobre o comando which
: localiza os executáveis em seu $ PATH que você tem permissão para executar e diz qual deles você usa se tiver mais de um com o mesmo nome no $ PATH. localizar apenas qualquer executável.Eu o uso aqui como um exemplo de onde procurar a permissão.O fato de which
encontrar o executável já indica que você tem permissão para executá-lo.