我如何知道我是否是 sudoer?

我如何知道我是否是 sudoer?

当我没有 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或什至不允许运行它。

相关内容