
Estou trabalhando em um script para o usuário Bob com as partes relevantes mostradas abaixo. O problema que estou tendo é que se eu colocar este cronjob sob o usuário Bob, o zenity funcionará, mas o desligamento não. E se eu colocá-lo em modo root, o desligamento funcionará, mas o zenity não estará visível no console.
#!/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"
Também tentei rodar no root e usar su para Bob para zenity e voltar ao root para desligar, mas não funcionou.
Existe uma maneira de fazer isso?
Outras informações
O SO é Linux Mint e Bob é o único usuário da máquina
Responder1
Usuários não privilegiados não podem desligar uma máquina pela linha de comando. Se for absolutamente necessário enviar shutdown como Bob, você pode adicioná-lo aos sudoers usando visudo
.
sudo visudo
Adicione a seguinte linha a is:
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
Salvar Arquivo. Então você pode su
usar bob e testar o comando:
sudo /sbin/shutdown -h "now"