尝试使用 Xorg 时出错:仅允许控制台用户运行 X 服务器?

尝试使用 Xorg 时出错:仅允许控制台用户运行 X 服务器?

因此,当我尝试以普通用户身份使用 Xorg 命令时,这是它给我的错误:

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

但我不明白,什么是“控制台用户”?当我切换到 root 时,它给了我另一个错误:

_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE) 
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE) 
(EE) 
Please consult the The X.Org Foundation support 
     at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.

那么到底发生了什么以及每个错误的原因是什么?

更新:命令的输出netstat -ln | grep -E '[.]X|:6[0-9][0-9][0-9]是:

unix  2      [ ACC ]     STREAM     LISTENING     18044    @/tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     47610    @/tmp/.X11-unix/X1
unix  2      [ ACC ]     STREAM     LISTENING     18045    /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     47611    /tmp/.X11-unix/X1

答案1

如果您确定安全隐患(任何人都可以使用 root 权限启动 X-Server,因为它具有特权硬件访问权限并访问大量文件,因此可能会打开一个很大的安全漏洞)并且只关心功能,而不关心安全性,对于您问题的这一部分:

因此,当我尝试以普通用户身份使用 Xorg 命令时,这是它给我的错误:

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

以下措施可以提供帮助:

您可以添加到

/etc/X11/Xwrapper.config

线

allowed_users = anybody

解释来自man Xorg.wrap

配置文件
[...]
allowed_users = rootonly|console|anybody

指定哪些用户可以通过包装器启动 X 服务器。使用 rootonly 只允许 root,使用 console 只允许用户登录到物理控制台,使用anyone 允许任何人。默认是控制台。

答案2

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

但我不明白,什么是“控制台用户”?

这意味着你需要从Linux 文本控制台,实际上你是什么用户并不重要。 (除非root总是允许的)。令人困惑:)。

这里有两个不同的切换到 Linux 文本控制台(和返回)的示例,具体取决于您的系统配置方式:

切换到 Fedora 中的文本控制台

详细信息可能有所不同,例如哪些编号控制台(Ctrl+Alt+F1、Ctrl+Alt+F2 等)允许文本登录,以及哪些用于图形会话(或根本不使用)。


我不断收到消息:“无法建立任何侦听套接字...”

您会收到如下错误消息:

_XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already running

这个问题与上一个问题非常相似。您将收到此消息可能是因为锁定文件已以某种方式删除,或者某些其他不创建锁定文件的程序已在侦听此端口。您可以通过执行 a 来检查这一点netstat -ln。 Xserver 通常侦听 tcp 端口 6000+,因此,如果您使用命令行选项启动 Xserver,:1它将侦听端口 6001。 请查看上面的文章以获取更多信息

如上所述,在引用部分的上方有更多关于:0, :1,含义的信息::2

https://www.x.org/wiki/FAQErrorMessages/#index5h2

(请注意,您使用的是更现代的 X 服务器配置,它不会侦听任何 TCP 端口。这就是您的错误发生在 _XSERVTransSocket 中的原因UNIX系统CreateListener,而不是 _XSERVTransSocket伊内特创建监听器。但原理是完全一样的)。

当我在 Kali 虚拟机中尝试 Xorg:2 时,屏幕变黑,为什么会发生这种情况?

啊哈,是的:-D。 Xorg 是一个图形服务器。如果你想在上面显示一些图形,你需要运行一些客户端程序。

如今,Xorg 也以空游标启动。它故意没有任何功能,以避免启动图形内容时出现闪烁/不一致。这已经改变了——当我第一次使用 Xorg 时,默认背景和光标非常引人注目。如果您想看看它是什么样子,您可以传递该-retro选项:-)。

传统上 - 我认为这是 Xwrapper 的行为 - Xorg 会抓住一个未使用的控制台并切换到它。在这种情况下,您可以切换回之前的控制台(见上文)。当然,一旦您找到它占用了哪个数字控制台,您就可以再次切换回 Xorg 服务器:-)。

如果您在 Linux 上运行虚拟机,您的虚拟机将提供某种方法来注入组合键 Ctrl+Alt+F1 或其他组合键,因为按该组合键可能会切换您的控制台。真实的机器。

我会告诉你进行比较startx -- :2,它(希望)启动一些客户端以及 X 服务器:-)。然而,现在最流行的现代 GUI 明确不支持多个会话。因此,在运行之前,您必须确保注销现有的 GUI 会话startx。否则,它可能看起来有效,但随后会以你不理解的奇怪方式出错。

答案3

我使用 startx 命令来启动 DWM,并将其插入到我的 bashrc 中,这样我就不必每次登录时手动键入 startx 命令,此时我开始收到“仅允许控制台用户使用 teh x 服务器”错误所以我从 bashrc 中删除了 startx 命令,这意味着我必须手动启动服务器,但现在我不再收到错误

答案4

我在新安装 CentOS 9 时发生了这种情况。问题是/etc/X11/Xresource必须更改文件权限以包含所有组,如下所示root

# chmod 775 /etc/X11/Xresource

相关内容