사용자 A( ) 가 사용자 B( )로서 자신의 그래픽 세션에서 그래픽 응용 프로그램을 실행 userA
하려고 한다고 가정합니다. userB
최신 GNU/Linux 시스템에서는 어떻게 수행됩니까?
답변1
짧은 답변
설치하다
run-as
스크립트 및 실행:
run-as -X <user> <command>
긴 대답
그래픽 세션 userB
에 대한 액세스 권한 을 부여하는 스크립트를 작성하고 실행합니다 .userA
/home/userA/.local/bin/xhost_userB
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
xhost +si:localuser:userB
임의로 선택할 수 있는: 로그인 시 접근을 허용합니다.
/home/userA/.config/autostart/xhost_userB.desktop
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
[Desktop Entry]
Type=Application
Name=Graphical auth for user B
Comment=Authorize user B to run graphical software in this session
GenericName=userB xauth
Exec=/home/userA/.local/bin/xhost_userB
X-GNOME-Autostart-enabled=true
일부 응용 프로그램에는 추가 서비스가 필요할 수 있습니다.
/home/userA/.local/bin/xhost_userB_extra_services
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
systemctl --user restart dbus
systemctl --user import-environment
사용자 B(예: Seahorse)로 애플리케이션을 실행하는 스크립트를 만듭니다.
/home/userA/.local/bin/application
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
machinectl shell --uid=userB \
--setenv=DISPLAY="${DISPLAY}" \
--setenv=NO_AT_BRIDGE=1 \
.host \
/home/userA/.local/bin/xhost_userB_extra_services
machinectl shell --uid=userB \
--setenv=DISPLAY="${DISPLAY}" \
--setenv=NO_AT_BRIDGE=1 \
.host /usr/bin/application
참고: XWayland가 실행 중인 경우 Wayland에서도 작동합니다.