将用户可以使用 sudo 的命令列入白名单

将用户可以使用 sudo 的命令列入白名单

我一直在尝试设置用户可以在我的系统上运行的命令白名单。我使用的服务器运行的是 CentOS 7。应该使用什么语法才能仅允许用户以 sudo 身份运行某组命令和参数?我还希望 sudo 在调用这些命令时不需要密码。

我试过了:

  1. 用户 ALL=/bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2 NOPASSWD:ALL

  2. 用户 ALL=(用户:组) /bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2 NOPASSWD:ALL

  3. 用户 ALL=(用户) /bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2 NOPASSWD:ALL

  4. 用户 ALL=(/bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2) NOPASSWD:ALL

所有这些尝试都导致 /etc/sudoers 文件出现语法错误。

我看过这个问题:如何阻止 sudo 用户运行特定命令?并阅读本指南:https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos。问题似乎表明第一次尝试应该成功,而指南似乎表明第二次尝试应该成功。那么什么是成功?

答案1

尝试添加如下内容:

user ALL = (root) NOPASSWD: /bin/cmd1 args, /bin/cmd2 args

在上面这一行:

  • 用户是需要访问命令的用户
  • /bin/cmd1 args、/bin/cmd2 args 是命令
  • root 是执行命令的用户

相关内容