최신 init 시스템에서 루트로 실행되는 스크립트를 통해 사용자에게 GUI 입력을 요청하려면 어떻게 해야 합니까?

최신 init 시스템에서 루트로 실행되는 스크립트를 통해 사용자에게 GUI 입력을 요청하려면 어떻게 해야 합니까?

장치가 연결될 때 Udev에 의해 시작되는 "원샷" 유형의 Systemd 서비스가 있습니다. 서비스가 루트로 쉘 스크립트를 시작하고 있습니다. 스크립트가 예상대로 작업을 수행하려면 사용자 입력이 필요합니다. 사용자는 GUI 세션에 로그인합니다(현재는 Xorg이지만 필수는 아님).

GUI 세션을 실행 중인 일반 현재 활성 사용자에게 루트 요청 입력으로 실행되는 프로세스는 어떻게 할 수 있습니까? 민감한 데이터이거나 민감하지 않은 데이터인 경우에는 어떻게 되나요? 그렇다면 어떨까요?아니요오그?

데이터를 변수에 넣는 한 가지 방법은 스크립트의 다음 부분입니다.

#!/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 도구를 사용하여 이를 달성하는 가장 좋은 방법은 무엇입니까?

감사합니다!

관련 정보