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