我一直在尝试设置用户可以在我的系统上运行的命令白名单。我使用的服务器运行的是 CentOS 7。应该使用什么语法才能仅允许用户以 sudo 身份运行某组命令和参数?我还希望 sudo 在调用这些命令时不需要密码。
我试过了:
用户 ALL=/bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2 NOPASSWD:ALL
用户 ALL=(用户:组) /bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2 NOPASSWD:ALL
用户 ALL=(用户) /bin/cmd1 arg1 arg2、/bin/cmd2 arg1 arg2、/bin/cmd3 arg1 arg2 NOPASSWD:ALL
用户 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 是执行命令的用户