デバイスが接続されたときにUdevによって開始される「ワンショット」タイプのSystemdサービスがあります。サービスがrootとしてシェルスクリプトを起動しています。スクリプトが期待どおりに操作を実行するには、ユーザー入力が必要です。ユーザーはGUIセッションにログインします(現在はXorgですが必須ではありません)。
GUIセッションを実行している一般的な現在アクティブなユーザーにroot要求入力として実行されるプロセスはどうなりますか?機密データまたは機密データではない場合はどうなりますか?それではどうでしょうか?いいえオグ?
データを変数に入れる1つの方法は、スクリプトの次の部分です。
#!/bin/bash
while read session_id login ; do
if [ "$( loginctl show-session -p State "${session_id}" )" == "State=active" ]
then
break
fi
done <<< "$( loginctl list-sessions --no-legend | awk '{print $1 " " $3}' )"
if [ -n "${login}" ] ; then
string="$( DISPLAY=:0.0 \
XAUTHORITY="/home/${login}/.Xauthority" \
zenity --entry )"
else
echo "WARNING:${0}: Do nothing as no one logged in."
exit
fi
しかし、例えば DISPLAY の複雑な評価が必要です。そしてXorgだけですか?
一般的なLinuxツールを使用してこれを達成するための最良の方法は何ですか?
ありがとうございます!