su(sudo) 명령 후 X 응용프로그램이 구동되지 않습니다

su(sudo) 명령 후 X 응용프로그램이 구동되지 않습니다

PROBLEM DESCRIPTION or QUESTION


다른 사용자로 전환한 후, X11 애플리케이션인 xyes를 실행할 수 없습니다. 첫 로그인 후 xeyes가 실행됐지만, su 명령 후 더 이상 xeyes가 실행되지 않습니다.

RESOLUTION


SSH 터널을 통해 X11 애플리케이션을 시작하려면 두 가지 필수 값이 필요합니다.

  • DISPLAY 설정

  • 적합한 쿠키 값

X11 포워딩을 통해서 원격 서버에 접속할 때 자동으로 이 두 값이 설정이 되지만 사용자를 전환한 후에는 이러한 값이 손실됩니다.
일부 OS의 특정 셸에서는 DISPLAY 환경이 전달되지만 쿠키 값은 전달되지 않습니다.

사용자를 전환한 후에는 두 값을 수동으로 설정해야 합니다. 다음을 시도해 보세요.

 

  1. 첫 번째 로그인 환경에서 다음 명령을 사용하여 값을 수집합니다:

    prev_user@host: ~$ echo $DISPLAY localhost:11.0 prev_user@host: ~$ xauth list ubuntu2204/unix:17  MIT-MAGIC-COOKIE-1  57b85b2d1562cbc283e6cab05ea9a644 ... ubuntu2204/unix:11  MIT-MAGIC-COOKIE-1  557171cd4ed871a2efb1d2d583d136da

 

  1. 전환된 사용자 환경에서 값을 설정합니다:

    switched_user@host: ~$ export DISPLAY=localhost:11.0 switched_user@host: ~$ xauth add ubuntu2204/unix:11  MIT-MAGIC-COOKIE-1  557171cd4ed871a2efb1d2d583d136da  switched_user@host: ~$ xeyes

 

다음은 좀 더 간단한 명령입니다:

prev_user@host: ~$ echo -n "export DISPLAY=$DISPLAY; xauth add "; xauth list| grep unix:`echo $DISPLAY|awk -F[:\.] '{print $2}'`; su - switched_user export DISPLAY=localhost:11.0; xauth add ubuntu2204/unix:11  MIT-MAGIC-COOKIE-1  557171cd4ed871a2efb1d2d583d136da => copy and paste this string in the switched user environment Password: 

 

이 또한 잘 작동합니다:

prev_user@host: ~$ su -P - switched_user -c "export DISPLAY=$DISPLAY; xauth add $(xauth list| grep unix:`echo $DISPLAY|awk -F[:\.] '{print $2}'`); bash"

이 명령이 작동한다면 가장 편리한 방법인 것 같습니다.