![如何通过现代初始化系统以 root 身份运行的脚本请求用户使用 GUI 输入?](https://linux22.com/image/224081/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E7%8E%B0%E4%BB%A3%E5%88%9D%E5%A7%8B%E5%8C%96%E7%B3%BB%E7%BB%9F%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E7%9A%84%E8%84%9A%E6%9C%AC%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%20GUI%20%E8%BE%93%E5%85%A5%EF%BC%9F.png)
我有“oneshot”类型的 Systemd 服务,由 Udev 在设备插入时启动。服务正在以 root 身份启动 shell 脚本。该脚本需要用户输入才能按预期完成其工作。用户登录到 GUI 会话(暂时是 Xorg,但不是强制性的)。
以 root 身份运行的进程如何向运行 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 常规工具实现此目的的最佳方法是什么?
谢谢你!