本文介绍在Linux系统下查找所有sudo用户的方法,普通用户如何转变为sudo用户请参考Debian系统如何赋予普通用户sudo权限一文。
背景 有一天Linux用户问我如何找到我的Linux服务器中的超级用户数(拥有sudo访问权限的用户)?好问题,但是,我没有答案,其实这只是一个单行命令。对于那些想知道如何在Linux系统中找到所有sudo用户或超级用户的人,请继续阅读。 你可能会认为一个优秀的Linux管理员必须知道他管理的系统中有多少超级用户和普通用户,你是对的,但是,有时我们有可能需要临时sudo访问普通用户来安装软件或自己执行某些管理任务,随着时间的推移,我们可能忘记撤销sudo访问权限,因此,最好不时地了解系统中有多少超级用户,如果有任何遗忘或不需要的sudo访问权限,你可以简单地撤销它们,可以参考在Linux系统中运行没有sudo密码的特定命令。
在Linux系统下查找所有sudo用户的方法 我们先列出系统中的所有用户,为此,请运行: $ awk -F':' '{ print $1}' /etc/passwd 我的Ubuntu系统的输出信息如下,仅做参考: root daemon bin sys sync games man lp news uucp proxy www-data backup list irc gnats nobody systemd-timesync systemd-network systemd-resolve systemd-bus-proxy syslog _apt lxd messagebus uuidd dnsmasq sshd sk senthil kumar ywnz 你还可以使用以下命令列出所有用户: $ compgen -u 在所有用户中,让我们只在Linux系统下找到sudo或超级用户: $ grep '^sudo:.*$' /etc/group | cut -d: -f4 sk,ywnz 此外,你可以使用“getent”命令而不是“grep”命令(在Linux系统下使用grep命令搜索文件的详细用法)来获得相同的结果: $ getent group sudo | cut -d: -f4 sk,ywnz 正如你在上面的输出中看到的,“sk”和“ywnz”是我Ubuntu系统下的sudo用户。 在上面的例子中,我们列出了所有sudo用户,你可能想知道某个用户是否具有sudo权限。 为此,请运行以下命令: $ sudo -l -U sk 输出信息如下: Matching Defaults entries for sk on ubuntuserver: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User sk may run the following commands on ubuntuserver: (ALL : ALL) ALL 如上面输出的信息,名为“sk”的用户可以执行所有命令,所以它在sudo小组,让我们检查另一个用户,运行以下命令: $ sudo -l -U senthil 输出如下信息: User senthil is not allowed to run sudo on ubuntuserver. 用户“senthil”不允许运行sudo,因此它只能是一个普通用户。 我们还可以通过运行以下命令来查找用户是否具有sudo访问权限: $ sudo -nv 如果你没有得到任何的输出信息,则用户仍然具有sudo访问权限。 如果你看到如下所示的输出信息,则该用户没有sudo访问权限: $ sudo -nv Sorry, user senthil may not run sudo on ubuntuserver. 至此,在Linux系统下查找所有sudo用户的方法就讲到这里了。
相关主题 |