在 apache 下以 root 身份运行特定的 perl 脚本

在 apache 下以 root 身份运行特定的 perl 脚本

我有一个 perl 程序,当通过 Fedora Linux 服务器上的 apache 通过互联网调用时,它可以正常运行。在该 perl 脚本中,我有一个系统命令,但由于需要以 root 身份运行,因此无法运行。我意识到所有安全后果,但肯定有一种简单的方法可以清除合法脚本以 root 身份执行合法功能的路径。我尝试使用 sudo,但我必须删除 apache 用户的 requiretty 限制,而且我不想削弱安全性。apache 配置中应该有一种方法可以允许特定文件或目录以 root 身份运行,但我一直找不到它。我不希望所有 cgi-bin 都以 root 身份运行。任何帮助都值得感激。

答案1

Perl?Perl 支持 setuid 脚本。

https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts

Perl 是一个显著的例外。它以安全的方式明确支持 setuid 脚本。事实上,即使您的操作系统忽略了脚本上的 setuid 位,您的脚本也可以运行 setuid。这是因为 perl 附带了一个 setuid root 帮助程序,它可以执行必要的检查并以所需的权限对所需脚本重新调用解释器。perlsec 手册对此进行了解释。以前 setuid perl 脚本需要 #!/usr/bin/suidperl -wT 而不是 #!/usr/bin/perl -wT,但在大多数现代系统上,#!/usr/bin/perl -wT 就足够了。

相关内容