我有一个 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
.