最新のinitシステムでrootとして実行されるスクリプトを介してユーザーにGUI入力を要求するにはどうすればよいですか?

最新のinitシステムでrootとして実行されるスクリプトを介してユーザーにGUI入力を要求するにはどうすればよいですか?

デバイスが接続されたときに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ツールを使用してこれを達成するための最良の方法は何ですか?

ありがとうございます!

ベストアンサー1

おすすめ記事