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"

相關內容