Para executar o comando poweroffou reboota pessoa precisa ser super usuário. Existe alguma maneira que eu possa executar isso como um usuário normal? Só não quero sudodigitar minha senha sempre que reiniciar ou desligar.
A resposta depende do que o init sistema de seus usos distro ... Por exemplo, com systemde um ativo logindsessão você pode reiniciar ou desligamento sem privilégios elevados fornecendo nenhum outro usuário ainda está logado ...
jasonwryan
@jasonwryan No momento, estou usando o Ubuntu, que não usa systemdpor padrão. Então você quer dizer que outras distros, como o Arch, podem reiniciar sem privilégios eliminados?
Stormvirux
Sim: conforme as condições do meu primeiro comentário.
Jasonwryan #
Respostas:
22
Eu mudei /etc/sudoerspara que todos os usuários do grupo admin possam executar os seguintes comandos sem solicitar uma senha.
sudo halt
sudo reboot
sudo poweroff
Você só precisa adicionar as seguintes linhas ao /etc/sudoers
## Admin user group is allowed to execute halt and reboot
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff
e adicione-se ao grupo de administradores.
Se você deseja que apenas um usuário possa fazer isso, remova %admine substitua-o por usernameeste
## user is allowed to execute halt and reboot
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff
Você pode descobrir mais sobre ou /etc/sudoerscom man sudoersa página de manual on - line
Você também pode criar um novo arquivo com o /etc/sudoers.dnome que desejar (eu o nomeei 'shutdown') e inserir as seguintes linhas:
# Allows me to shutdown the system without a password
yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff
Basta alterar "yourUserName" para o SEU nome de usuário e adicionar ou remover comandos para usar, pessoalmente eu o uso apenas para shutdown. Uma das principais diferenças da criação de um arquivo específico sudoers.dé que esse arquivo sobreviverá às Atualizações do sistema
Se você escolher essa abordagem, verifique se /etc/sudoerspossui uma #includediretiva apropriada para a leitura de arquivos /etc/sudoers.d/.
Patricktokeeffe 30/09/19
2
Você também pode conseguir isso com truque com setuid. Não sei se funcionará em todos os sistemas, porque às vezes eles ignoram o bit setuid / setgid.
Você pode especificar um grupo de usuários que podem executar alterações no estado do sistema, no meu caso adm. Em seguida, adicione usuários apropriados a esse grupo.
gpasswd -a $USER adm
Especifique permissões:
chmod 4550 /usr/bin/reboot
ls -l outpus deve ficar assim:
-r-sr-x--- 1 root adm 18928 Mar 13 2015 /usr/bin/reboot
shutdown -ah now // halt
shutdown -ar now // reboot
De acordo com o homem shutdown, existe uma opção para uso não raiz:
Se shutdownfor chamado com o argumento -a (adicione isso à chamada de shutdown em / etc / inittab ), ele verifica se o arquivo /etc/shutdown.allow está presente. Em seguida, ele compara os nomes de logon nesse arquivo com a lista de pessoas conectadas em um console virtual ...
Funciona no Debian Linux. E há um limite para 32 nomes de usuário em /etc/shutdown.allow.
systemd
e um ativologind
sessão você pode reiniciar ou desligamento sem privilégios elevados fornecendo nenhum outro usuário ainda está logado ...systemd
por padrão. Então você quer dizer que outras distros, como o Arch, podem reiniciar sem privilégios eliminados?Respostas:
Eu mudei
/etc/sudoers
para que todos os usuários do grupo admin possam executar os seguintes comandos sem solicitar uma senha.Você só precisa adicionar as seguintes linhas ao
/etc/sudoers
e adicione-se ao grupo de administradores.
Se você deseja que apenas um usuário possa fazer isso, remova
%admin
e substitua-o porusername
esteVocê pode descobrir mais sobre ou
/etc/sudoers
comman sudoers
a página de manual on - linefonte
Você também pode criar um novo arquivo com o
/etc/sudoers.d
nome que desejar (eu o nomeei'shutdown'
) e inserir as seguintes linhas:Basta alterar "yourUserName" para o SEU nome de usuário e adicionar ou remover comandos para usar, pessoalmente eu o uso apenas para
shutdown
. Uma das principais diferenças da criação de um arquivo específicosudoers.d
é que esse arquivo sobreviverá às Atualizações do sistemafonte
/etc/sudoers
possui uma#include
diretiva apropriada para a leitura de arquivos/etc/sudoers.d/
.Você também pode conseguir isso com truque com setuid. Não sei se funcionará em todos os sistemas, porque às vezes eles ignoram o bit setuid / setgid.
Você pode especificar um grupo de usuários que podem executar alterações no estado do sistema, no meu caso
adm
. Em seguida, adicione usuários apropriados a esse grupo.Especifique permissões:
ls -l
outpus deve ficar assim:Depois você pode apenas digitar:
fonte
Solução mais simples:
Então você poderá usar um destes comandos:
De acordo com o homem shutdown, existe uma opção para uso não raiz:
Funciona no Debian Linux. E há um limite para 32 nomes de usuário em
/etc/shutdown.allow
.fonte