Desligar ou reiniciar como usuário normal

17

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.

Stormvirux
fonte
2
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

Raphael Ahrens
fonte
4

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

Racu
fonte
1
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

Depois você pode apenas digitar:

reboot
hurufu
fonte
1

Solução mais simples:

sudo echo $USER >> /etc/shutdown.allow

Então você poderá usar um destes comandos:

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.

Alexander Yancharuk
fonte
4
Não existe essa opção no Fedora, CentOS ou RHEL.
Fpmurphy 1/11
1
Isso também não está funcionando para o Ubuntu, pelo menos é o que recebo dos documentos. Seria útil ver se esse é um recurso exclusivo do Debian.
Raphael Ahrens #
Ainda não está no Ubuntu (18.04) em 2020 =}
toque