web-dev-qa-db-ja.com

XDG_RUNTIME_DIRが環境に設定されていません

Ubuntu 14.04 LTSを実行しています。 LightDMでのログイン中にGUIアプリケーションを実行したかったので、/etc/pam.d/lightdmに次の行を追加しました。

auth required pam_exec.so debug log=/path/to/file.log /path/to/script.sh

その後、スクリプトはバイナリを呼び出します。いくつかのログを追加したので、スクリプトが呼び出されていることを知っています。問題は、スクリプトがバイナリを呼び出すときにこのエラーが発生することです。

error: XDG_RUNTIME_DIR not set in the environment.
(binary:3781): Gtk-WARNING **: cannot open display:

ログも確認すると、スクリプトがルートによって呼び出されていることがわかりました。

ログでは、DISPLAYとXAUTHORITYをエコーし​​ようとしましたが、両方とも空白です。スクリプトでバイナリを呼び出すためにgksudoを使用しようとしましたが、同じエラーがあります。これに対する安全な回避策はありますか?

2
flyingknee

動作させることができました。バイナリを呼び出す前に、スクリプトに次の環境変数を設定するだけです。

export XAUTHORITY=/var/run/lightdm/root/:0
export DISPLAY=:0

これが安全かどうか教えてください。

1
flyingknee