如何使用超级用户权限运行Apache模块?

时间:2016-04-03 18:07:29

标签: c apache apache-modules suexec

我在Ubuntu上使用Apache 2.4。我用C语言编写了一个模块,并使用Apache Extension工具(apxs)将其集成到Apache服务器中。我的代码中有一部分我使用exec函数调用可执行文件,但我想将该可执行文件称为超级用户。所以我想以超级用户权限运行我的模块,但默认情况下,Apache作为www-data用户运行并要求输入www-data的密码。

有没有办法使用超级用户权限运行此模块?

否则在Apache模块中有没有其他方法在C中运行root命令?

是否可以使用suExec模块?

1 个答案:

答案 0 :(得分:0)

不,不可能在与Apache服务器本身不同的用户下运行Apache模块。但是有几种策略可以解决这个限制。

1)您可以设置" setuid bit"在您要从Apache运行的可执行文件中,如下所示:

chown root:root executable
chmod 06755 executable

然后,当您从Apache模块运行此可执行文件(例如,使用fork + execsystem)时,可执行文件将从root用户下运行,使用root权限。

2)您可以配置/etc/sudoers文件,允许www-data在sudo命令的帮助下使用root权限运行相关的可执行文件。

3)您可以使用root权限运行单独的进程,并使用任何类型的IPC / RPC从Apache模块接收命令。

请注意,如果一切正常,您应该避免使用root权限,因为在root下运行代码可能会带来安全风险。当然,除非您完全确定您的代码没有任何错误。