Existe uma maneira de remover os requisitos de root para um comando específico no Linux? Se sim, como assim?

Existe uma maneira de remover os requisitos de root para um comando específico no Linux? Se sim, como assim?

Estou usando o Ubuntu 12.04 LTS e estou tentando fazer com que o comando específico

dhclient

não requer privilégios de root. Fiz algumas pesquisas que me levaram a acreditar que poderia desbloquear um usuário "su", que não exigiria root para nada, mas tenho medo de quebrar algo dessa forma.

Talvez eu esteja fazendo duas perguntas separadas:

  1. Onde residem todos os comandos que não requerem privilégios de root no meu sistema operacional?

  2. Posso mover este comando para lá?

Qualquer forma funcionará no meu caso, e nem tenho certeza se é assim que os comandos do usuário comum se distinguem dos demais, para ser sincero.

Responder1

A melhor maneira de fazer isso é com o sudo, que é muito configurável em relação a qual usuário pode executar quais comandos. Use visudopara editar /etc/sudoers(nunca edite este arquivo diretamente - se você cometer um erro, ficará completamente bloqueado). A entrada a seguir permitiria ao usuário bobexecutar dhclientsem exigir uma senha.

bob ALL = (root) NOPASSWD: /sbin/dhclient

Bob correria sudo dhclientquando para executá-lo.

Responder2

Se um usuário específico pode ou não executar com êxito um programa (binário ou script) depende de duas coisas:

  • O usuário precisa de privilégios de execução no arquivo.

    Isso não é um problema: ls -lrevela que qualquer usuário pode executar arquivos /sbin/dhclient.

  • O usuário precisa de privilégios de leitura, gravação e/ou execução nos arquivos que o programa acessa.

    Esta parte é muito, muito mais complicada e perigosa, pois pode envolver a alteração das permissões de muitos arquivos.

Para mais informações, vejaChmod - Wikipédia.

A maneira normal de executar um comando com privilégios de root é sudo. Depágina de manual:

sudopermite que um usuário autorizado execute umcomandocomo superusuário ou outro usuário, conforme especificado nosudoersarquivo. O uid e o gid reais e efetivos são definidos para corresponder aos do usuário alvo conforme especificado no arquivo passwd e o vetor de grupo é inicializado com base no arquivo de grupo (a menos que o-Popção foi especificada). Se o usuário que fez a chamada for root ou se o usuário de destino for o mesmo que o usuário que fez a chamada, nenhuma senha será necessária. De outra forma,sudorequer que os usuários se autentiquem com uma senha por padrão (NOTA: na configuração padrão esta é a senha do usuário, não a senha do root). Depois que um usuário for autenticado, um carimbo de data/hora será atualizado e o usuário poderá usar o sudo sem senha por um curto período de tempo (5 minutos, a menos que seja substituído nosudoers).

A sintaxe básica no seu caso específico é:

sudo dhclient

Em relação às suas outras perguntas:

1.​ Onde residem todos os comandos que não requerem privilégios de root no meu sistema operacional?

A maioria dos binários para todos os usuários reside dentro de /bin, /usr/bine /usr/local/bin.

A maioria dos binários do sistema (requer privilégios de root) reside em /sbin.

Esta é apenas uma regra prática. Você pode colocar binários onde quiser.

Veja também:Padrão de hierarquia do sistema de arquivos

2.​ Posso mover esse comando para lá?

Além de potencialmente quebrar alguma coisa, isso não teria absolutamente nenhum efeito.

informação relacionada