Debian, Sid(있는 경우)가 있고 디스플레이 관리자를 사용하는 대신 콘솔에서 X를 시작하고 싶지만 입력하면 startx <RET>
다음 메시지가 나타납니다.
xinit: connection to X server lost
루트로 로그인하거나 를 사용하면 sudo
X를 시작할 수 있으므로 권한이 문제의 원인인 것으로 의심됩니다.
일반 사용자가 X(아마도 통해)를 시작할 수 있게 하려면 어떻게 해야 합니까 startx
?
권한 조작을 구현할 수 있지만 다른 단점이 있는 간단한 솔루션과 잠재적으로 더 복잡한 솔루션(일종의 프록시와 같은 솔루션)에 관심이 있습니다.비그래픽 디스플레이 관리자, 또는 다른 것…
답변1
.xauthority 및 .ICEauthority 파일은 루트 사용자가 소유할 수 있습니다. 제거해 보거나, 파손되지 않도록 방해가 되지 않는 곳으로 옮기십시오.
sudo mv ~/.Xauthority ~/.bak.Xauthority
sudo mv ~/.ICEauthority ~/.bak.ICEauthority
X가 아닌 환경에서는 Ctrl + Alt + F2를 사용하여 가상 터미널로 전환하는 것이 좋습니다.
답변2
~에서이 문제("루트가 아닌 사용자로 X를 시작하십시오") 그리고이 답변즉, 인용이 기사, 나는 다음과 같은 해결책을 생각해 냈습니다
sudo chown $USER /dev/tty8
sudo chmod o+rw /dev/input/*
startx -- vt8 -retro -sharevts -logfile ~/.local/X.log &
Xorg 서버가 시작되었습니다.옳은(?)그러나 가능한 모든 보안 문제에도 불구하고 다음과 같은 다른 많은 문제가 발생합니다.
X
Chrome 검색창에 입력한 내용 중 일부는 소량의 정크와 함께 실행되는 콘솔에 표시됩니다.- 일반적인 순서를 사용하여 CtrlAltn다른 터미널로 전환 할 수 없습니다
- 디스플레이 관리자가 자동으로 제공하는 일부 클라이언트는 더 이상 존재하지 않으며 가장 짜증나는 점은 Multi Key결합 문자의 사용을 가로채서 버스에 넣는 것이 무엇이든(???) Chrome이 이를 보고 그렇지 않으면 X 조합 시퀀스를 무시한다는 것입니다( 미국 kbd 레이아웃을 사용하기 때문에 매우 짜증나지만 Barbora Krejčíková처럼 복사하여 붙여넣지 않고도 글쓰기를 좋아합니다.
위의 문제에 대한 가능한 해결책에 대해 (아마도 댓글에서) 듣고 싶습니다.
답변3
이는 수년 동안 기본적으로 가능했습니다. 시스템의 일부 항목이 성공했습니다.더 이상 가능하지 않음진짜 질문은 "어떤 메커니즘을 사용하여 작동하게 만들 것인가"가 아니라 "기존 메커니즘을 어떻게 작동시킬 것인가"입니다.다시".
권한 없는 startx 사용을 허용하는 두 가지 메커니즘이 있습니다.
이전에는(systemd 이전) X 서버가
/usr/bin/Xorg
setuid 루트였습니다. 이는 특히 Xorg가 여전히 직접 PCI 액세스에 사용되는 경우 레거시 메커니즘입니다. 이제 Xorg 자체는 setuid가 아니지만 루트 권한을 유지해야 하는지 여부를 감지할 수 있는 setuid 실행 프로그램 "Xorg.wrap"이 함께 제공됩니다.지금시스템 로그인데몬은 프런트 데스크 tty에 해당하는 사용자에게 자동으로 권한을 부여합니다. 이 부분은 udev + ConsoleKit가 다양한 /dev ACL에 "전면" 사용자를 추가하기 위해 사용되었기 때문에 systemd보다 이전 버전입니다. 그러나 systemd-logind는 추가로 /dev/input에 액세스하는 Xorg의 프록시 역할을 합니다. 거기에서 직접 허가를 받으세요.
systemd를 사용하지 않는 배포판에서는엘로킨드데몬도 같은 일을 할 수 있습니다. 어떤 대가를 치르더라도 시스템화를 피하려는 배포판에서는앉다데몬을 사용하는 것이 가능합니다(비록 제가 아는 한 Xorg는 아직 다른 API를 지원하지 않지만).
데비안은 주로 systemd를 사용하므로 systemd-logind를 실행해야 하며 PAM 구성은 pam_systemd.so를 호출하여 데몬에 콘솔 로그인을 등록해야 합니다. 콘솔에 로그인하면 loginctl session-status
"seat0"의 활성 사용자로 보고되어야 하며 getfacl /dev/snd/pcm*
오디오 장치에 대한 읽기 및 쓰기 액세스 권한이 있는 것으로 나열되어야 합니다.
(참고: 당신은실제로올바른 사용자로 로그인해야 합니다. 루트로 로그인하여 사용하세요.su -l <myuser>
확실히 카운트 안됨– 이 작업만 수행하면 "su"를 사용할 때 세션 소유가 루트로 유지됩니다. )
모든 것이 제대로 작동하면 Xorg는 /dev/dri를 통해 GPU를 직접 열고 D-Bus를 통해 systemd-logind와 통신하여 /dev/input에서 장치를 열 수 있습니다. Xorg.0에서 이를 볼 수 있습니다. 통나무 . (이것은체계세션 버스가 아닌 버스 – 즉 dbus-launch 대신 dbus.service. )
systemd-logind 또는 elogind를 사용하면 텍스트 기반 로그인 바로 위에서 동일한 전면 VT에서 Xorg를 시작해야 합니다.아니요전용 VT에서. 이는 vt$(fgconsole)
대신 startx를 사용한다는 의미입니다 vt8
(데비안의 startx는 기본적으로 올바른 작업을 수행하지만).
존재하다일부일부 경우(예: 커널 모드 설정 지원 없이 독점 nVidia GPU 드라이버를 사용하는 경우) systemd-logind의 ACL 및 프록시가 충분하지 않을 수 있으며 여전히 setuid Xorg를 사용해야 합니다. 이 기능은 /etc/X11/Xwrapper.config
다음에 설명된 대로 활성화 할 수 있습니다.Xorg.wrap(1).