这是一句简单的话:有没有一种方法/命令来检查 X 服务器是否以 root 身份或用户身份运行?
这本来应该是一句俏皮话,但可惜……我最近升级了我的 Arch Linux 盒子。升级后,我被告知X
现在可以无根运行。我查看了 Arch Linux 官方页面,它指出:
在 systemd-logind 的帮助下,X 现在是无根的 [...][1]
这让我对如何检查是否X
无根运行感兴趣。如何才能做到这一点?
答案1
有几种方法可以使用 ; 输出用户 ID (UID) ps
。一个简单的方法是-f
:
ps -fC X
将为您提供所有正在运行的 X 服务器的信息(可以有多个)。
这假设调用了可执行文件X
——如果没有这样的进程,您将不得不瞄准其他目标。由于几乎可以肯定它至少包含大写的 X(例如,Xorg
, X11
),因此另一种方法是通过 grep 进行过滤:
ps -o uid,comm -A | grep X
这会删除列标题,但 UID 是左侧的数字。如果是0
,则该进程正在以 root 身份运行。如果没有任何结果,请尝试ps -fA | grep X
;这涉及到更多的混乱。
最后,如果没有X
名称中带有大写字母的进程,请尝试x
;您至少可以找到用于控制它的命令,例如startx
或xinit
。您也可以尝试dm
,因为显示管理器的名称中通常包含此内容(gdm
等)。然而,这些实际上都不是 X 服务器,尽管xinit
启动了服务器,但服务器可执行文件通常具有setuid 位设置,这意味着即使xinit
拥有非特权 UID,X 仍将以 root 身份运行。