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.
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
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
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
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.
systemd
y una activalogind
sesión puede reiniciar o de apagado y sin privilegios elevados proporcionan ningún otro usuario ha iniciado sesión en ...systemd
de manera predeterminada. ¿Quiere decir que otras distribuciones como Arch pueden reiniciarse sin privilegios otorgados?Respuestas:
Cambié
/etc/sudoers
para que cada usuario que esté en el grupo de administración pueda ejecutar los siguientes comandos sin que se les solicite una contraseña.Solo necesita agregar las siguientes líneas a
/etc/sudoers
y agregarse al grupo de administración.
Si desea que solo un usuario pueda hacer esto, simplemente elimínelo
%admin
y reemplácelo deusername
esta maneraPuede obtener más información
/etc/sudoers
sobreman sudoers
o en la página de manual en líneafuente
También puede crear un nuevo archivo con el
/etc/sudoers.d
nombre que desee (lo nombré'shutdown'
) y poner las siguientes líneas dentro: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 particularsudoers.d
es que este archivo sobrevivirá a las actualizaciones del sistemafuente
/etc/sudoers
tenga una#include
directiva adecuada para leer los archivos/etc/sudoers.d/
.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.Especificar permisos:
ls -l
el outpus debería verse así:Luego, simplemente puede escribir:
fuente
La solución más simple:
Entonces puedes usar uno de estos comandos:
Según man shutdown hay una opción para un uso no root:
Funciona en Debian Linux. Y hay un límite para 32 nombres de usuario en
/etc/shutdown.allow
.fuente