
私は、以下に示す関連部分を含むユーザー Bob 用のスクリプトを作成中です。問題は、この cronjob をユーザー Bob の下に置くと、zenity は動作しますが、shutdown は動作しないということです。また、これを 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 で実行し、zenity のために Bob に su を使用し、root に戻ってシャットダウンすることも試みましたが、うまくいきませんでした。
これを実行する方法はありますか?
他の情報
OSはLinux Mintで、ボブがマシンの唯一のユーザーです
答え1
権限のないユーザーは、コマンド ラインからマシンをシャットダウンすることはできません。 どうしても Bob としてシャットダウンを送信する必要がある場合は、 を使用して sudoers に Bob を追加できますvisudo
。
sudo visudo
次の行を追加します。
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
ファイルを保存します。その後、su
bob としてコマンドをテストできます。
sudo /sbin/shutdown -h "now"