Como posso executar a reinicialização como um usuário normal sem precisar digitar uma senha? [duplicado]

2

Meu objetivo é usar o reboot como myusername sem inserir uma senha. Como posso conseguir isso?

Eu li Permitindo que um usuário use o sudo sem uma senha e seguiu as sugestões, mas ainda não funciona para mim. Aqui está o meu /etc/sudoers , mas ele ainda pede uma senha:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername  ALL=NOPASSWD:/sbin/reboot

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Eu então corro

sudo reboot

e me pedem uma senha. Como posso executar reboot como usuário normal sem precisar de senha?

Aqui está o sudo -l output:

Matching Defaults entries for myusername on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User myusername may run the following commands on this host:
    (root) NOPASSWD: /sbin/reboot
    (ALL : ALL) ALL

Eu também tentei com

myusername  ALL=NOPASSWD:/bin/ls

mas sudo ls ainda pediu uma senha, então isso parece ser um problema geral, não específico de reboot .

    
por Level1Coder 27.02.2014 / 01:36

1 resposta

5

Antes de mais nada, eu não repito, NÃO tente fazer com que seu usuário tenha privilégios de root em todos os momentos, que é a mãe de todos os riscos de segurança e não é apenas desnecessário, mas pedindo por problemas.

De qualquer forma, se você quiser que seu usuário possa executar um comando específico, você precisa adicionar esta linha a sudoers (altere terdon para seu nome de usuário, é claro):

terdon ALL=NOPASSWD:/sbin/reboot

Você pode, então, executá-lo com sudo reboot sem digitar uma senha . Você sempre precisará executá-lo com sudo , mas o melhor que você pode obter é passwordless sudo para determinados comandos.

Isso é devido ao modo como o sistema funciona. Quando você tenta executar, por exemplo, shutdown -r , como um usuário normal, você recebe esta mensagem:

$ shutdown -r
shutdown: you must be root to do that!

Isso não tem nada a ver com sudo , o comando em questão simplesmente verifica se o seu userid é 1 (o superusuário) e, se não for, não permitirá que você o execute. Você poderia configurar seu sistema para ter outro usuário como usuário1, mas isso simplesmente mudaria o nome de usuário de root e seria um grande problema sem nenhuma razão (e não o ajudaria a fazer o que você estão tentando de qualquer maneira).

Portanto, a menos que você esteja realmente logado como o usuário cujo userid é 1, você sempre terá que usar sudo para executar comandos privilegiados. A única solução seria criar um alias (ou uma função ou um script) para reboot no arquivo de configuração de shells ( ~/.bashrc , por exemplo):

alias reboot='sudo shutdown -r now'

Dessa forma, como você já definiu shutdown como sem senha em /etc/sudoers , será possível executar

$ reboot

e obtenha o resultado desejado.

    
por 27.02.2014 / 02:11

Tags