루트로서 한 사용자의 홈 디렉토리를 다른 드라이브에 대한 소프트 링크로 변경합니다(사용자가 로그인하지 않은 경우). 그러면 해당 사용자는 더 이상 startx를 실행할 수 없지만, 동일한 .xinitrc를 사용하고 audio 그룹에 있는 다른 사용자는 여전히 실행할 수 있습니다. 이전 홈 디렉토리로 다시 변경하거나 usermod를 통해 설정하는 것은 도움이 되지 않습니다. 콘솔에 오류가 없고 startx가 성공적으로 종료되며 이 프롬프트는 다음 정보가 기록된 경우에만 나타납니다.
xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
여기에 로그가 있습니다(xorg의 로그는 더 길지만 더 많은 정보를 제공하지 않는 것 같습니다).
root@Freesia/~# startx >& /tmp/startxlog
root@Freesia/~# cat /tmp/startxlog
X.Org X Server 1.20.4
X Protocol Version 11, Revision 0
Build Operating System: Linux 5.10.0-21-amd64 x86_64 Debian
Current Operating System: Linux Freesia 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=27ab16fe-4180-4d31-ba99-60476076083f ro quiet
Build Date: 28 March 2023 05:03:02PM
xorg-server 2:1.20.4-1+deb10u9 (https://www.debian.org/support)
Current version of pixman: 0.36.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/home/alex/.local/share/xorg/Xorg.1.log", Time: Tue Mar 19 17:47:00 2024
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
(II) modeset(0): Initializing kms color map for depth 24, 8 bpc.
xinit: connection to X server lost
waiting for X server to shut down (II) Server terminated successfully (0). Closing log file.
이전 홈 디렉토리를 사용하여 사용자를 삭제하고 다시 생성해 보았지만 소용이 없었습니다.
답변1
PATH 변수에는 사용자 홈 디렉터리의 새 위치에 있는 하위 디렉터리에 대한 기호 링크가 포함되어 있습니다. 이는 실제 홈 디렉토리가 변경될 때 순환 참조(너무 많은 수준의 심볼릭 링크)를 생성하므로 startx가 즉시 종료되는 것 같습니다.
(원래 질문에 대한 업데이트에서 축 어적으로 따옴)