Apagar o reiniciar como usuario normal

17

Para ejecutar el comando poweroffo rebootuno debe ser superusuario. ¿Hay alguna forma de que pueda ejecutar esto como un usuario normal? Simplemente no quiero sudoingresar mi contraseña cada vez que reinicio o apago.

Stormvirux
fuente
2
La respuesta depende de qué sistema utiliza su distro init ... Por ejemplo, con systemdy una activa logindsesión puede reiniciar o de apagado y sin privilegios elevados proporcionan ningún otro usuario ha iniciado sesión en ...
jasonwryan
@jasonwryan Actualmente estoy usando Ubuntu, que no usa systemdde manera predeterminada. ¿Quiere decir que otras distribuciones como Arch pueden reiniciarse sin privilegios otorgados?
Stormvirux
Sí: según las condiciones en mi primer comentario.
jasonwryan

Respuestas:

22

Cambié /etc/sudoerspara que cada usuario que esté en el grupo de administración pueda ejecutar los siguientes comandos sin que se les solicite una contraseña.

sudo halt
sudo reboot
sudo poweroff

Solo necesita agregar las siguientes líneas a /etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

y agregarse al grupo de administración.

Si desea que solo un usuario pueda hacer esto, simplemente elimínelo %adminy reemplácelo de usernameesta manera

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Puede obtener más información /etc/sudoerssobre man sudoerso en la página de manual en línea

Raphael Ahrens
fuente
4

También puede crear un nuevo archivo con el /etc/sudoers.dnombre que desee (lo nombré 'shutdown') y poner las siguientes líneas dentro:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Simplemente cambie "yourUserName" por SU nombre de usuario y agregue o elimine comandos para usar, personalmente lo uso solo para shutdown. Una de las principales diferencias de crear un archivo en particular sudoers.des que este archivo sobrevivirá a las actualizaciones del sistema

Racu
fuente
1
Si elige este enfoque, asegúrese de que /etc/sudoerstenga una #includedirectiva adecuada para leer los archivos /etc/sudoers.d/.
patricktokeeffe
2

También puede lograr esto mediante el truco con setuid. No sé si funcionará en todos los sistemas, porque a veces ignoran el bit setuid / setgid.

Puede especificar un grupo de usuarios que pueden realizar cambios en el estado del sistema en mi caso adm. Luego agregue los usuarios apropiados a este grupo.

gpasswd -a $USER adm

Especificar permisos:

chmod 4550 /usr/bin/reboot

ls -l el outpus debería verse así:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

Luego, simplemente puede escribir:

reboot
hurufu
fuente
1

La solución más simple:

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

Entonces puedes usar uno de estos comandos:

shutdown -ah now   // halt
shutdown -ar now   // reboot

Según man shutdown hay una opción para un uso no root:

Si shutdownse llama con el argumento -a (agregue esto a la invocación de apagado en / etc / inittab ), verifica si el archivo /etc/shutdown.allow está presente. Luego compara los nombres de inicio de sesión en ese archivo con la lista de personas que han iniciado sesión en una consola virtual ...

Funciona en Debian Linux. Y hay un límite para 32 nombres de usuario en /etc/shutdown.allow.

Alexander Yancharuk
fuente
44
No existe tal opción en Fedora, CentOS o RHEL.
fpmurphy el
1
Esto tampoco funciona para Ubuntu, al menos eso es lo que obtengo de los documentos. Sería útil ver si esta es una característica única de Debian.
Raphael Ahrens el
Todavía no está en Ubuntu (18.04) en 2020 =}
tink