如何确定 X 服务器是否以 root 权限运行

lor*_*age 4 root xorg not-root-user x-server

这是一个单线:有没有办法/命令来检查 X 服务器是以 root 还是以用户身份运行?


这应该是一个单行但唉......我最近升级了我的 Arch Linux 机器。升级后,我收到通知,X现在可以无根运行。我查看了官方 Arch Linux 页面,它指出:

X 现在在 systemd-logind 的帮助下是无根的 [...] [1]

这让我对如何检查是否X无根运行感兴趣。如何才能做到这一点?

gol*_*cks 6

有几种方法可以使用ps;输出用户 ID (UID) 。一个简单的方法是-f

ps -fC X
Run Code Online (Sandbox Code Playgroud)

将为您提供所有正在运行的 X 服务器的信息(可能不止一个)。

这假定可执行文件被调用X——如果没有这样的过程,你将不得不针对其他东西。由于几乎可以肯定它至少有大写字母 X(例如,Xorg, X11),另一种方法是通过 grep 过滤:

ps -o uid,comm -A | grep X
Run Code Online (Sandbox Code Playgroud)

这将删除列标题,但 UID 是左侧的数字。如果是0,则该进程正在运行 root。如果没有任何结果,请尝试ps -fA | grep X;这个涉及更多的混乱。

最后,如果X名称中没有带大写的进程,请尝试x; 您至少可以找到用于控制它的命令,例如startxxinit。您也可以尝试dm,因为显示管理器通常在其名称中包含此内容(gdm等)。但是,这些实际上都不是 X 服务器,尽管xinit启动了服务器,但服务器可执行文件通常设置了 setuid 位,这意味着即使xinit具有非特权 UID,X 仍将以 root 身份运行