我想startx
从screen
会话中运行。几年前,这个功能还可以用。现在似乎已被禁用,以防止人们通过 运行他们的 X 服务器ssh
。
错误:
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
。可以通过明确允许来解决这个问题,方法是allowed_users = anybody
添加/etc/X11/Xwrapper.config
parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
。我不知道如何修复这个问题。
startx
逃离的原因screen
否则,X 服务器下的控制台将保持打开状态,如果 X 服务器崩溃,控制台将暴露在外,从而允许访问运行控制台的用户所拥有的任何权限。对于大多数人来说,这不是问题,因为他们将在启动时使用显示管理器启动 X 服务器,或者根本不运行 X 服务器。
软件是:Arch GNU/Linux 内核 5.3.1、Xorg 1.20.5、Xorg-xinit 1.4.1、GNU 屏幕 4.7.0
相关问题: 通过 SSH 运行 startx。尝试startx
从运行ssh
(因此情况不同),但收到相同的错误。评论中建议的方法是使用运行级别(Arch 默认情况下没有;可以使用 systemd.targets 实现相同功能)。这似乎表明没有办法解决上述第二个错误,而不会以不良方式破坏系统。但是,对于当前使用 而不是 的问题,情况可能会有所screen
不同ssh
。
答案1
从屏幕运行 startx 的原因是,否则 X 服务器下的控制台将保持打开状态,并且在 X 服务器崩溃时会暴露,从而允许访问运行控制台的用户所拥有的任何权限。
好吧,我不确定 Screen 究竟是如何避免这种情况的 —— 但核心问题已经可以通过使用exec
启动 startx 来避免,这会导致控制台的 shell 进程取而代之startx 进程。一旦 startx 因任何原因退出,控制台将没有主进程,并且没有其他选择,只能返回到登录提示符。
它似乎已被禁用,以防止人们通过 ssh 运行他们的 X 服务器。
否;它被禁用以避免需要向 /usr/bin/Xorg 授予 root 权限(setuid 位)。
以前,X 服务器会被设置为 setuid,以便它可以打开新的虚拟控制台、输入设备等等。现在使用“rootless”模式,该模式仅使用您已有的相同权限启动 Xorg,并且它会尝试直接在与其所在的 tty 相对应的虚拟控制台上绘制。
(不要与另一种“无根”模式混淆,该模式没有对应于整个桌面的所谓“根窗口”,并且仅适用于 Xwin。)
然而,在终端多路复用器、终端仿真器和远程 shell 连接中,是没有虚拟控制台。
parse_vt_settings: 无法打开 /dev/tty0 (权限被拒绝)。我不知道如何修复这个问题。
使用以下参数明确指定要使用的正确虚拟控制台vt#
:
startx -- vt1