Cron 作业控制台连接和 Root 权限

Cron 作业控制台连接和 Root 权限

我正在为用户 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"

相关内容