无法从 GNU screen 会话运行 startx

无法从 GNU screen 会话运行 startx

我想startxscreen会话中运行。几年前,这个功能还可以用。现在似乎已被禁用,以防止人们通过 运行他们的 X 服务器ssh

错误:

  1. /usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server。可以通过明确允许来解决这个问题,方法是allowed_users = anybody添加/etc/X11/Xwrapper.config

  2. 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

相关内容