
Я работаю над скриптом для пользователя Bob с соответствующими частями, показанными ниже. Проблема в том, что если я помещу этот cronjob под пользователя Bob, zenity будет работать, но shutdown не будет. А если я помещу его под root, shutdown будет работать, но zenity не будет виден на консоли.
#!/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"
Я также пробовал работать под учетной записью root и использовать su для Bob для zenity и возвращаться в режим root для завершения работы, но это не сработало.
Есть ли способ сделать это?
Дополнительная информация
Операционная система — Linux Mint, и Боб — единственный пользователь машины.
решение1
Непривилегированные пользователи не могут выключить машину из командной строки. Если вам абсолютно необходимо отправить shutdown как Боб, вы можете добавить его в sudoers с помощью visudo
.
sudo visudo
Добавьте следующую строку:
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
Сохраните файл. Затем вы можете su
как боб и протестировать команду:
sudo /sbin/shutdown -h "now"