저는 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
이것이 내가 이 작업을 수행한 방법입니다.
- 기존 X 세션이 있는 사용자로 x 터미널을 엽니다.
- 주문을 발행합니다
xauth list
. X 서버의 다양한 설명자에 대한 요청을 인증하는 데 사용되는 X Magic 쿠키 값이 표시되어야 합니다. "unix" 참조가 있는 것을 복사하세요. 예를 들어myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 초기 사용자로 두 번째 터미널을 열고 사용자(su)를 원하는 ID로 전환합니다.
su - user2
- 이제 사용자를 전환했으므로 명령을 실행
xauth add
하고 이전에 2단계에서 복사한 줄을 붙여넣은 다음 Enter 키를 누릅니다.xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 명령줄에서 두 번째 터미널의 X 프로그램을 시작합니다. 예를 들면 다음과 같습니다.
firefox
그게 다야!
답변4
먼저 두 번째 사용자를 localuser에 추가합니다.
$ xhost SI:localuser:user2
localuser: 플레이어가 액세스 제어 목록에 추가되었습니다.
애플리케이션을 실행하는 것보다:
$ sudo -u user2 -H firefox