当我没有 sudoer 时 Linux 系统会如何表现?如果我尝试使用 sudo,会发生以下情况:
server:/tmp>$ sudo cal
[sudo] password for user:
Sorry, try again.
是否有可能我只是不知道我的密码,或者这是否意味着我不是 sudoer? (在另一台机器上系统打印出我不是 sudoer 并且该事件将被报告)
答案1
要了解特定用户是否具有 sudo 访问权限,我们可以一起使用-l
和-U
选项。
例如,
如果用户具有 sudo 访问权限,它将打印该特定用户的 sudo 访问权限级别。
$ sudo -l -U pradeep User pradeep may run the following commands on this host: (ALL : ALL) ALL
如果用户没有 sudo 访问权限,它将打印该用户不允许在本地主机上运行 sudo。
$ sudo -l -U pradeep.c User pradeep.c is not allowed to run sudo on localhost.
答案2
您可以使用该-l
标志来列出您的权限。
-l[l] [command]
If no command is specified, the -l (list) option will list the allowed (and forbidden)
commands for the invoking user (or the user specified by the -U option) on the current
host. If a command is specified and is permitted by sudoers, the fully-qualified path
to the command is displayed along with any command line arguments. If command is
specified but not allowed, sudo will exit with a status value of 1. If the -l option
is specified with an l argument (i.e. -ll), or if -l is specified multiple times, a
longer list format is used.
如果您不在该文件中,您应该会收到在另一台计算机上看到的“不在 sudoers 文件中”错误。
答案3
您可以使用以下命令检查您是否在 sudo 组中
groups
在 shell 脚本中你可能需要使用这个:
if groups | grep "\<sudo\>" &> /dev/null; then
echo yes
else
echo no
fi
答案4
我需要检查用户是否具有脚本的 sudo 权限,但有时我正在测试的用户甚至不允许运行sudo -l
所以我做了这个功能:
check_if_user_has_sudo(){
sudo -l -U $USER | grep -q 'may run the following' \
&& <has sudo privileges> \
|| <doesn't have sudo privileges>
}
基本上它会检查是否sudo -l
有效并实际打印用户是否被允许。
如果打印用户 il 允许运行任何命令,则将grep -q
简单地返回 0。sudo -l
否则它没有sudo
或什至不允许运行它。