私はBobユーザーのためのスクリプトを書いています。関連部分は以下の通りです。私が持っている問題は、このcronjobをBobユーザーの下に置くとzenityは機能しますが、シャットダウンは機能しないことです。ルートを解放すると正常に動作しますが、コンソールに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 exitとして再び終了しようとしましたが、うまくいきませんでした。
これを行う方法はありますか?
その他の情報
オペレーティングシステムはLinux Mintで、Bobはそのシステムの唯一のユーザーです。
ベストアンサー1
権限のないユーザーは、コマンドラインからコンピュータをシャットダウンできません。 Bobに終了メッセージを送信する必要がある場合は、Bobをsudoersに追加できますvisudo
。
sudo visudo
isに次の行を追加します。
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
アーカイブを保存します。その後、su
bob の役割を実行し、コマンドをテストできます。
sudo /sbin/shutdown -h "now"