다른 사용자와 동일한 화면에 있는 두 개의 GUI 애플리케이션

다른 사용자와 동일한 화면에 있는 두 개의 GUI 애플리케이션

저는 userA로 로그인했습니다. 사용자 B로 GUI 애플리케이션을 실행하고 싶습니다. 루트가 아닌 사용자입니다. 사용자 B도 원격이 아닌 로컬이므로 다른 환경 변수가 필요합니다. 나는 두 번째 X를 실행하고 싶지 않고 동일한 모니터에 있기를 원합니다. 터미널에서 실행되는 프로그램에는 아무런 문제가 없으며 su - ...정상적으로 작동합니다. 그래프의 경우 오류 메시지가 있습니다.

Application initialization failed: couldn't connect to display ":0.0"

또는

Gtk-WARNING **: cannot open display: :0.0

좋은 해결 방법 없을까요? 올바르게 사용하는 xhost방법에 대한 기사 ?

답변1

userBname디스플레이에 대한 액세스 권한을 부여하려면 다음 명령을 실행하십시오 . 모든 사람에게 액세스 권한을 xhost +SI:localuser:userBname부여할 수 있지만 xhost +이는 안전하지 않습니다. 더 나은 접근 방식은 사용자별로 액세스 권한을 부여하는 것입니다. 로컬 사용자에 대한 xhosts 항목의 올바른 구문은 입니다 SI:localuser:username.

그런 다음 su userBname마지막 export DISPLAY=:0.0으로 GUI 프로그램을 실행하십시오. 이전에 를 사용하여 디스플레이에 대한 액세스 권한을 부여했지만 프로그램이 그래픽 출력을 배치할 위치를 알 수 있도록 xhost환경 변수도 설정해야 합니다 . 서로 다른 사용자가 서로 다른 변수를 사용할 수 DISPLAY있도록 하여 DISPLAY기계에 연결된 여러 사용자가 서로 다른 물리적 터미널을 사용할 수 있도록 합니다.

답변2

원하는 사용자 이름과 함께 gksu -u를 사용하고 비밀번호를 입력하면 됩니다.

DISPLAY=:1.0 gksu [-u <user>] [options] <command>

또는 su를 사용한 다음 XDISPLAY를 올바른 화면으로 설정하고 마지막으로 원하는 응용 프로그램을 시작할 수 있습니다.

답변3

이것이 내가 이 작업을 수행한 방법입니다.

  1. 기존 X 세션이 있는 사용자로 x 터미널을 엽니다.
  2. 주문을 발행합니다 xauth list. X 서버의 다양한 설명자에 대한 요청을 인증하는 데 사용되는 X Magic 쿠키 값이 표시되어야 합니다. "unix" 참조가 있는 것을 복사하세요. 예를 들어 myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  3. 초기 사용자로 두 번째 터미널을 열고 사용자(su)를 원하는 ID로 전환합니다.su - user2
  4. 이제 사용자를 전환했으므로 명령을 실행 xauth add하고 이전에 2단계에서 복사한 줄을 붙여넣은 다음 Enter 키를 누릅니다. xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. 명령줄에서 두 번째 터미널의 X 프로그램을 시작합니다. 예를 들면 다음과 같습니다.firefox

그게 다야!

답변4

먼저 두 번째 사용자를 localuser에 추가합니다.

$ xhost SI:localuser:user2

localuser: 플레이어가 액세스 제어 목록에 추가되었습니다.

애플리케이션을 실행하는 것보다:

$ sudo -u user2 -H firefox

관련 정보