Shell-Script
Cron 作業控制台連接和根權限
我正在為使用者 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"