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

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

나는 사용자 A로 로그인했습니다. 루트가 아닌 사용자 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단계에서 복사한 줄을 붙여넣은 다음 return 키를 누릅니다. 예: xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. 두 번째 터미널의 명령줄에서 X 프로그램을 시작합니다. 예:firefox

그게 다야!

답변4

먼저 두 번째 사용자를 localuser에 추가하십시오.

$ xhost SI:localuser:user2

localuser:액세스 제어 목록에 플레이어가 추가되는 중

앱을 실행하는 것보다:

$ sudo -u user2 -H firefox

관련 정보