是否可以在不使用选项或参数的情况下限制 sudoers 文件中的命令

是否可以在不使用选项或参数的情况下限制 sudoers 文件中的命令

sudoers文件中我们可以限制运行不带选项的命令

例如/bin/su应该失败,并且后面任何su超过 4 个字符的内容都应该运行。例子:

sudo su daniel

应该运行

michael ALL=(ALL) NOPASSWD:ALL, /bin/su [a-z]{5,}

只是尝试用这些术语

无论如何要实现这一目标?

答案1

您可以在 sudoers 命令规范中使用通配符。要/bin/su仅允许使用以 5 个小写字母开头并后跟任意数量的其他参数的参数运行,您可以使用

michael ALL=(ALL) NOPASSWD: /bin/su [a-z][a-z][a-z][a-z][a-z]*

除非该参数具有固定大小,否则无法限制为单个参数,因为唯一可以匹配可变长度字符串的通配符是*并且它也匹配参数边界。

如果您需要更复杂的规则,请配置 sudo 以允许运行包装器脚本,并在该包装器脚本中执行参数检查。

…: ALL, /bin/su …没有任何意义,因为ALL已经允许任意命令。它只是相当于…: ALL.

目前尚不清楚您想要从 sudoers 配置中获得什么语义,因为您专注于特定的实施而不是目标。如果您想允许 Michael 在没有密码的情况下以某些用户身份运行任意命令,那么调用su是一种奇怪的间接方法。 sudo 已经做了权限提升,为什么还要在上面使用 su 呢?定义一组用户并允许 Michael 以其中任何用户的身份运行任意命令。

User_Alias target_users = alice, charlie, dominique
michael ALL = (target_users) NOPASSWD: ALL

相关内容