Como você pode saber se a execução de um programa requer raiz?

10

Eu entendo que isso é um pouco fundamental e talvez uma pergunta boba, mas eu não consegui encontrar uma resposta.

Eu entendo que todo arquivo tem o "Executable" bit.

Assumi que os programas que exigem root , que pertencem a root user e root group, não terão o Executable bit para Other e isso impediria que usuários não-root 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 algo?

    
por Dean 25.09.2014 / 09:42

1 resposta

12

Em algum momento, está no código. Por exemplo, no meio de hwclock.c , você encontrará:

if (getuid() == 0)
            permitted = TRUE;
else {
            /* program is designed to run setuid (in some situations) */
            if (set || systohc || adjust) {
                    warnx(_("Sorry, only the superuser can change "
                            "the Hardware Clock."));
[...]

que mudará o comportamento do programa se você for root ou não.

Na maioria dos outros casos, é implícito; delegada ao kernel. Por exemplo, se o programa chamar a chamada de sistema que permite reinicializar o sistema, ele funcionará somente se você for root. Se você não for root, você terá um erro de "permissão negada" de que o aplicativo (se bem escrito) simplesmente se reporta a você. Ou você está tentando excluir um arquivo; se você tiver a permissão correta no arquivo para fazer isso, ele será bem-sucedido; se não, depende se você é root ou não --- quando rm chama unlink() o kernel irá verificar as permissões.

Então, não, em princípio, você não pode dizer apenas olhando para a permissão do executável se o programa requer privilégios de root ou não. Muitos programas exigirão apenas algumas operações, por isso será muito difícil fazer algo assim. O caso de hwclock é um (qualquer um pode ler o relógio, mas somente o root pode defini-lo), mas existem centenas deles ( kill , rm , cat ...)

Depois, há o mundo relacionado e interessante dos programas setuid ...

    
por Rmano 25.09.2014 / 10:10