首页 > 解决方案 > 如何在 Perl 中以 root 身份运行句子

问题描述

我制作了一个使用 apache2 将用户添加到系统的 perl 程序。当我以 root 身份运行时它可以工作,但我在 html 的寄存器中使用它,因此该程序由该用户运行(我认为)并且它不起作用。/var/log/apache2/error.log 中的错误是:"AH1215: can't open_a /etc/passwd Permission denied at /usr/lib/cgi-bin/registro.cgi line 60"该行如下

Linux::usermod->add($user,$password)

一种解决方案必须是使用 chmod +s 向 registro.cgi 授予权限 +s,但不允许使用这种方式。

标签: linuxapacheperldebian

解决方案


您的问题的前提表明对系统安全性缺乏适当的关注,但是如果您真的想为 Web 应用程序提供这种特权,那么合理的方法是让单独的setuid程序以提升的特权运行以执行少数 root级动作。

这些setuid程序的功能有限,您可以进行额外的输入验证和验证,以确保它们不会被劫持做坏事。然后,Web 脚本可以setuid根据需要调用该程序。

我想强调关于允许 CGI 脚本操作/etc/passwd. 对于 Web 应用程序来说,这是非常可疑的行为,您应该在继续设计之前仔细考虑。


推荐阅读