![Existe uma maneira de remover os requisitos de root para um comando específico no Linux? Se sim, como assim?](https://rvso.com/image/1316781/Existe%20uma%20maneira%20de%20remover%20os%20requisitos%20de%20root%20para%20um%20comando%20espec%C3%ADfico%20no%20Linux%3F%20Se%20sim%2C%20como%20assim%3F.png)
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:
Onde residem todos os comandos que não requerem privilégios de root no meu sistema operacional?
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 visudo
para editar /etc/sudoers
(nunca edite este arquivo diretamente - se você cometer um erro, ficará completamente bloqueado). A entrada a seguir permitiria ao usuário bob
executar dhclient
sem exigir uma senha.
bob ALL = (root) NOPASSWD: /sbin/dhclient
Bob correria sudo dhclient
quando 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 -l
revela 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/bin
e /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.