在 sudoers 文件中将 Perl 的证明命令设置为 NOPASSWD 是否不安全?

在 sudoers 文件中将 Perl 的证明命令设置为 NOPASSWD 是否不安全?

我有一个 Perl 测试脚本,以 启动prove,它测试需要 root 权限的备份脚本,以便 rsync 可以更改从远程服务器下载的文件的权限。

所以我的 Mac 的 sudoers 文件中有以下内容:

root ALL=(ALL) ALL
%admin  ALL=(ALL) ALL
%admin ALL=(ALL) NOPASSWD:/path/to/prove

有用。但我的问题是,由于prove几乎可以用来运行本地用户编写的任何 perl 脚本,这是否存在巨大的安全风险?

答案1

是的,这种方法是不安全的。

编写一个专门运行您的命令的特定包装器,该命令随后调用prove,保护它以便只有 root 可以修改它,并将其放在只有 root 可以访问的地方。然后加文件的包装器sudoers

不允许在脚本中使用参数。

注意:尽管如此,如果有人可以修改第一个 perl 脚本或备份脚本,那么即使这样也容易被滥用。必须确保链中的所有内容只能由root.

相关内容