Shell-Script

Cron 作業控制台連接和根權限

  • June 10, 2019

我正在為使用者 Bob 編寫一個腳本,相關部分如下所示。我遇到的問題是,如果我把這個 cronjob 放在使用者 Bob 下,zenity 會工作,但關機不會。如果我把它放在 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 to Bob 進行 zenity 並退出回 root 以關閉,但這不起作用。

有沒有辦法做到這一點?

其他資訊

作業系統是 Linux Mint,Bob 是這台機器的唯一使用者

非特權使用者不能從命令行關閉機器。如果您絕對需要以 Bob 的身份發送 shutdown,您可以使用 .將他添加到 sudoers visudo

sudo visudo

將以下行添加到是:

bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"

保存存檔。然後你可以su作為 bob 並測試命令:

sudo /sbin/shutdown -h "now"

引用自:https://unix.stackexchange.com/questions/524028