我有一个 Perl 测试脚本,以 启动prove
,它测试需要 root 权限的备份脚本,因此 rsync 可以更改它从远程服务器下载的文件的权限。
所以我在我的 Mac 的 sudoers 文件中有以下内容:
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
%admin ALL=(ALL) NOPASSWD:/path/to/prove
有用。但我的问题是,由于prove
几乎可以用来运行本地用户编写的任何 perl 脚本,这是一个巨大的安全风险吗?
是的,这种方法是不安全的。
编写一个特定的包装器,专门运行您的命令,该命令随后调用
prove
,保护它以便只有 root 可以修改它,并将它放在只有 root 可以访问的地方。然后,将该包装器添加到sudoers
文件中。不允许在脚本中使用参数。
注意:虽然,如果有人可以修改第一个 perl 脚本或备份脚本,即使这样也很容易被滥用。必须确保链中的所有内容都只能通过
root
.