장치가 연결될 때 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 도구를 사용하여 이를 달성하는 가장 좋은 방법은 무엇입니까?
감사합니다!