Entendo que isso é um pouco fundamental e talvez uma pergunta boba, mas não consegui encontrar uma resposta.
Eu entendo que cada arquivo tem o "Executable"
bit.
Eu assumi que os programas que exigem root
, pertencentes ao root
usuário e ao root
grupo, não terão o Executable
bit Other
e impediriam que usuários não raiz os executassem. Mas nos diretórios /bin
e /sbin
vejo que todos os arquivos têm permissões como-rwxr-xr-x
Então, o que realmente determina se um usuário precisa ter permissão de root para executar alguma coisa?
permissions
root
reitor
fonte
fonte
/bin
ou/sbin
diretórios. O problema é que alguns desses programas estão executando diferentes, dependendo de qual usuário os executa.Respostas:
Em algum momento, está no código. Por exemplo, no meio de
hwclock.c
, você encontrará:o que mudará o comportamento do programa se você é root ou não.
Na maioria dos outros casos, é implícito; delegado ao kernel. Por exemplo, se o programa chamar a chamada do sistema que permite reiniciar o sistema, ele funcionará apenas se você for root. Se você não for root, terá um erro de "permissão negada" que o aplicativo (se bem escrito) simplesmente relata a você. Ou você está tentando excluir um arquivo; se você tiver a permissão correta no arquivo para fazê-lo, ele será bem-sucedido; caso contrário, depende se você é root ou não --- quando
rm
chamadas,unlink()
o kernel verifica as permissões.Portanto, não, em princípio você não pode dizer apenas olhando para a permissão do executável se o programa exigir privilégios de root ou não. Muitos programas os exigirão apenas para algumas operações, por isso será realmente difícil fazer algo assim. O caso de
hwclock
um (qualquer um pode ler o relógio, mas somente o root pode configurá-lo), mas há centenas deles (kill
,rm
,cat
...)Depois, há o mundo relacionado e interessante dos programas setuid ...
fonte