我正在为用户 Bob 编写一个脚本,相关部分如下所示。我遇到的问题是,如果我将此 cronjob 放在用户 Bob 下,zenity 可以工作,但关闭不会。如果我将其置于 root 关闭状态下,则可以正常工作,但 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 to Bob 进行 zenity 并退出回 root 关闭,但这不起作用。
有没有办法做到这一点?
其他信息
操作系统是 Linux Mint,Bob 是该机器的唯一用户
答案1
非特权用户无法从命令行关闭计算机。如果您绝对需要以 Bob 的身份发送 shutdown 消息,您可以使用 将他添加到 sudoers 中visudo
。
sudo visudo
将以下行添加到 is:
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
保存存档。然后你可以su
作为 bob 并测试命令:
sudo /sbin/shutdown -h "now"