因此,当我尝试以普通用户身份使用 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 文本控制台(和返回)的示例,具体取决于您的系统配置方式:
详细信息可能有所不同,例如哪些编号控制台(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