
Estoy trabajando en un script para el usuario Bob con las partes relevantes que se muestran a continuación. El problema que tengo es que si pongo este cronjob bajo el usuario Bob, zenity funcionará pero el apagado no. Y si lo pongo bajo root, el apagado funcionará pero zenity no será visible en la consola.
#!/bin/bash
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u Bob gnome-session)/environ)";
someValue=`DISPLAY=:0.0 zenity --text="tell me your value" --entry`
...
...
/sbin/shutdown -h "now"
También intenté ejecutar bajo root y usar su a Bob para zenity y volver a root para apagar, pero no funcionó.
¿Hay alguna forma de hacer esto?
Otra información
El sistema operativo es Linux Mint y Bob es el único usuario de la máquina.
Respuesta1
Los usuarios sin privilegios no pueden apagar una máquina desde la línea de comando. Si es absolutamente necesario enviar el apagado como Bob, puedes agregarlo a sudoers usando visudo
.
sudo visudo
Agregue la siguiente línea a is:
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
Guardar el archivo. Entonces puedes su
como Bob y probar el comando:
sudo /sbin/shutdown -h "now"