c - 如何以 super 用户权限运行 Apache 模块?

标签 c apache apache-modules suexec

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

有什么方法可以使用 super 用户权限运行这个模块吗?

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

是否可以为此使用 suExec 模块?

最佳答案

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

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

chown root:root executable
chmod 06755 executable

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

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

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

请注意,您应该尽可能避免使用 root 权限,因为在 root 下运行您的代码可能会带来安全风险。当然,除非您绝对确定您的代码不会有任何错误。

关于c - 如何以 super 用户权限运行 Apache 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36389138/

相关文章:

c - 函数调用是内存屏障吗?

c - 如何从打开的句柄中获取目录名称/路径

c - 为什么我的 Kadane 算法代码在所有情况下都给出 0 的输出?

c - fwrite后目标文件为空c语言

python - Ubuntu Modoboa 从 NGINX 到 APACHE2 : HttpS 403 forbidden while HTTP is correctly accessible. (mod_WSGI)

php - 本地开发环境,php & mysql 工作,但不在一起

ftp - 如何在 MAMP 服务器上安装 mod_ftp 模块

c - 如何在Windows下以可重复的批处理模式编译自创建的Apache模块?

php - 用户 'apache' @'localhost' 的访问被拒绝(使用密码 : NO)

apache - URL 重写似乎不起作用。 Apache 2