如何列出所有具有 root 权限的用户?

Eri*_*ric 44 linux root users

在 linux 机器上,我如何列出所有拥有 root 权限的用户(甚至更好的是,所有用户以及他们是否拥有 root 权限)?

War*_*ner 48

不要忘记更改root密码。如果除 root 之外的任何用户的 UID 为 0,他们都不应该这样做。馊主意。去检查:

grep 'x:0:' /etc/passwd

同样,您不应该这样做,而是要检查用户是否是根组的成员:

grep root /etc/group

要查看是否有人可以以 root 身份执行命令,请检查 sudoers:

cat /etc/sudoers

要检查 SUID 位,它允许以 root 权限执行程序:

find / -perm -04000

  • 这是比第一个更好的模式:`grep '[^:]*:[^:]*:0:' /etc/passwd`。+1 特别是用于检查 SUID。 (4认同)

Den*_*son 39

要查看 UID 0 是谁:

getent passwd 0
Run Code Online (Sandbox Code Playgroud)

要查看谁在组中rootwheel adm以及admin

getent group root wheel adm admin
Run Code Online (Sandbox Code Playgroud)

要列出所有用户及其所属的组:

getent passwd | cut -d : -f 1 | xargs groups
Run Code Online (Sandbox Code Playgroud)

  • 与错误地依赖 /etc/passwd 文件的所有其他答案不同,这个使用 `getent passwd` 代替的答案实际上是正确的。只是不要忘记检查 /etc/sudoers。 (9认同)

Raf*_*iar 6

纯 root 是用户 ID“0”。

系统中的所有用户都在/etc/passwd文件中:

less /etc/passwd
Run Code Online (Sandbox Code Playgroud)

root 用户的用户 ID 为“0”,即第 3 列。那些以“0”为组(第 4 列)的人也可能有一些 root 权限。

接下来,您需要查看组,看看谁是“root”或“wheel”或“admin”组的其他成员:

less /etc/group
Run Code Online (Sandbox Code Playgroud)

这些组中列出的用户可能具有一些 root 权限,尤其是通过“sudo”命令。

您要检查的最后一件事是“sudo”配置,看看谁被列为有权运行此命令。这个文件本身有很好的文档记录,所以我不会在这里复制它:

less /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

这涵盖了谁可以拥有 root 访问权限的主要领域。

  • 绝对不能保证所有用户都在 /etc/passwd 中。例如,它们可能在 LDAP 中。但是`getent passwd` 应该以passwd 格式列出所有系统用户(包括root),而不管它们是在哪个数据库中定义的。 (2认同)