Ubuntu novato aqui!
Não consigo descobrir qual mecanismo determina se devo executar um comando ou exibir um erro de 'Permissão negada'.
Por exemplo, assumindo que estamos usando uma conta de usuário regular, 'chown --help' é executado e funciona muito bem, mas na verdade, alterar os proprietários retorna um erro 'Permissões negadas'. O que da?
Usar ls -l em /bin/chown nos diz que usuários comuns (outros) têm permissão de execução.
ls -l /bin/chown
-rwxr-xr-x 1 root root 59904 Feb 7 2022 /bin/chown
O fato de podermos executar esse comando não significa que podemos usá-lo da maneira que quisermos?
Se não fosse pelas permissões de arquivo, existe outro mecanismo que os comandos usam para determinar se temos os privilégios necessários?
O sistema não verifica apenas se você pode executar o comando, existem muitos comandos que você pode executar. O sistema operacional verifica se você tem o direito de fazer a alteração que está tentando fazer. Caso contrário, o programa que você está tentando executar receberá um erro após tentar executar a operação.
Por exemplo, se você deseja executar o comando chmod nos arquivos de outra pessoa e não tem permissões de grupo e o arquivo não é +w para o "a", então algo como rw-r--r--, então há simplesmente não há como você editar ou modificar as permissões com o comando se for o arquivo de "jim" e você for "joe". O sistema operacional está impedindo a ação, não é o programa em si. O programa apenas relatará a mensagem de volta para você. Na verdade, o comando provavelmente tenta fazer o que você pediu... mesmo que não consiga.
Basicamente, o Linux possui uma infraestrutura de segurança de arquivos como esta:
Raiz > Proprietário > Grupo > Todos os outros
Portanto, alguém que está "mais à esquerda" nessa lista tem direitos para alterar as permissões ou dados de qualquer pessoa à direita deles, onde "Todos os outros" não têm.
Mas então você tem um problema mais complexo ... As pessoas podem executar um programa como "setuid", "setgid" ou qualquer outra coisa. Isso significa que o programa é executado como a combinação de usuário/grupo anexada ao arquivo. Às vezes é usado para dar a alguém acesso a um programa. (Não recomendo usar, o que é recomendado é dar ao usuário as permissões adequadas.)
De qualquer forma, só porque você pode executar qualquer programa não significa que você pode fazer qualquer coisa com ele. :D