如何使用超级用户权限运行Apache模块?
我在Ubuntu上使用Apache2.4。我用C语言编写了一个模块,并使用Apache扩展工具(apxs)将其集成到Apache服务器中。我的代码中有一部分使用exec函数调用可执行文件,但我想以超级用户的身份调用该可执行文件。因此,我希望以超级用户权限运行我的模块,但默认情况下,Apache以www数据用户的身份运行,并请求www数据的密码 是否有任何方法可以使用超级用户权限运行此模块 否则,在Apache模块中是否有其他方法在C中运行root命令如何使用超级用户权限运行Apache模块?,c,apache,apache-modules,suexec,C,Apache,Apache Modules,Suexec,我在Ubuntu上使用Apache2.4。我用C语言编写了一个模块,并使用Apache扩展工具(apxs)将其集成到Apache服务器中。我的代码中有一部分使用exec函数调用可执行文件,但我想以超级用户的身份调用该可执行文件。因此,我希望以超级用户权限运行我的模块,但默认情况下,Apache以www数据用户的身份运行,并请求www数据的密码 是否有任何方法可以使用超级用户权限运行此模块 否则,在Apache模块中是否有其他方法在C中运行root命令 是否可以为此使用suExec模块 不,不可能
是否可以为此使用suExec模块 不,不可能在与Apache服务器本身不同的用户下运行Apache模块。但有几种策略可以绕过这一限制 1) 您可以在要从Apache运行的可执行文件上设置“”,如下所示:
chown root:root executable
chmod 06755 executable
然后,当您从Apache模块运行此可执行文件(例如,使用fork
+exec
或使用system
)时,该可执行文件将在root用户下运行,并具有root权限
2) 您可以通过某种方式配置该文件,使www数据能够在sudo命令的帮助下以root权限运行有问题的可执行文件
3) 您可以使用根权限运行一个单独的进程,并使用任何类型的IPC/RPC从Apache模块接收命令
请注意,如果可能的话,您应该避免使用root权限,因为在root下运行代码可能会带来安全风险。当然,除非您完全确定您的代码不会有任何bug。否,否则不可能在Apache服务器本身之外的其他用户下运行Apache模块。但有几种策略可以绕过这一限制 1) 您可以在要从Apache运行的可执行文件上设置“”,如下所示:
chown root:root executable
chmod 06755 executable
然后,当您从Apache模块运行此可执行文件(例如,使用fork
+exec
或使用system
)时,该可执行文件将在root用户下运行,并具有root权限
2) 您可以通过某种方式配置该文件,使www数据能够在sudo命令的帮助下以root权限运行有问题的可执行文件
3) 您可以使用根权限运行一个单独的进程,并使用任何类型的IPC/RPC从Apache模块接收命令
请注意,如果可能的话,您应该避免使用root权限,因为在root下运行代码可能会带来安全风险。当然,除非您完全确定您的代码不会有任何bug。为什么不简单地让root成为被调用的可执行文件的所有者,并对可执行文件执行chmod u+s?但是,当从任何人都可以访问的web服务器调用二进制文件时,请小心以root用户身份运行二进制文件!为什么不简单地让root成为被调用的可执行文件的所有者,并对可执行文件执行chmodu+s呢?但是,当从任何人都可以访问的web服务器调用二进制文件时,请小心以root用户身份运行二进制文件!