如何以root身份执行(一些)CGI命令

我想在我的APACHE服务器中放一个简单的CGI脚本。 我想写在C可能(但也在PERL,如果我想)。

问题是它必须包含一些只能由root用户执行的行(例如iptables ),而webuser是运行服务器的用户。

我怎样才能让这些行可执行的根?

一种解决scheme可能是编写相关命令的包装脚本,严格保护此脚本并为此提供无密码的sudo。

编辑:包装脚本只是一些简短的shell脚本,你可以卸载关键的命令。 你可以保证这一点(例如,只能是Apache用户)。

对于sudo,Serverfault和其他地方已经有很多问题了,还有一个man page: man sudoman sudoers

如果您在阅读完可用文档后遇到困难,您仍然可以针对您的问题提出具体问题。

你可以在脚本上使用setuid 。 使用setuid的可执行文件作为任何普通用户的所有者执行。 (例如/bin/ping )。

对此非常小心。 确保脚本不能被恶意代码等覆盖

男人setuid