
我正在為使用者 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"