本文介绍在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用户的方法就讲到这里了。
相关主题