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

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

这是一句简单的话:有没有一种方法/命令来检查 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;您至少可以找到用于控制它的命令,例如startxxinit。您也可以尝试dm,因为显示管理器的名称中通常包含此内容(gdm等)。然而,这些实际上都不是 X 服务器,尽管xinit启动了服务器,但服务器可执行文件通常具有setuid 位设置,这意味着即使xinit拥有非特权 UID,X 仍将以 root 身份运行

相关内容