当前位置: 首页 > news >正文

使用mpm-itk让Apache以不同用户身份运行的完整指南

使用mpm-itk让Apache以不同用户身份运行

在WordPress开发和WordPress托管中,让Apache以不同用户身份运行非常有用。在Debian/Ubuntu中,Apache默认以www-data用户运行。然而,这在WordPress安装中并不方便:

在生产服务器上:

  • 许多WordPress文件必须由SSH/SFTP用户拥有才能应用更改
  • 大多数WordPress必须由Web服务器用户拥有,以便应用WordPress更新

在开发环境中更是如此:
除了上述原因外,许多WordPress文件必须由PC用户拥有,以便:

  • 使用IDE处理代码
  • 使用git(如果需要)
  • 轻松进行备份

使用mpm-itk让Apache以不同用户身份运行

这个问题有几种解决方案,其中之一就是mpm-itk。根据官方页面说明:

apache2-mpm-itk(简称mpm-itk)是Apache网页服务器的MPM(多处理模块)。mpm-itk允许您在每个虚拟主机下以独立的uid和gid运行——简而言之,一个虚拟主机的脚本和配置文件不再需要对所有其他虚拟主机可读。

只需安装:

apt-get install libapache2-mpm-itk

并在您的虚拟主机配置文件中使用以下指令:

<IfModule mpm_itk_module>AssignUserId your_user your_group
</IfModule>

例如:

<VirtualHost *:443>ServerName example.comServerAdmin you@your_email.comDocumentRoot /var/www/html/example.com<IfModule mpm_itk_module>AssignUserId your_user your_group</IfModule><Directory /var/www/html/example.com>Options -Indexes +FollowSymLinks +MultiViewsAllowOverride AllRequire all granted</Directory>ErrorLog ${APACHE_LOG_DIR}/example.com_error.logLogLevel warnCustomLog ${APACHE_LOG_DIR}/example.com_access.log combinedSetOutputFilter DEFLATESetEnvIfNoCase Request_URI .(?:gif|jpe?g|ico|png)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-varySetEnvIfNoCase Request_URI .pdf$ no-gzip dont-varyBrowserMatch ^Mozilla/4 gzip-only-text/htmlBrowserMatch ^Mozilla/4.0[678] no-gzipBrowserMatch bMSIE !no-gzip !gzip-only-text/htmlSSLEngine onSSLCertificateFile /etc/ssl-dev/your_cert.pemSSLCertificateKeyFile /etc/ssl-dev/your_cert_key.pem
</VirtualHost><VirtualHost *:80>ServerName example.comRedirect permanent / https://example.com/
</VirtualHost>

Docker相关问题

它不会在Docker容器中运行。在Apache error.log中会出现如下错误:

[mpm_itk:warn] [pid 1783] (itkmpm: pid=1783 uid=33, gid=33) itk_post_perdir_config(): setgid(1000): Operation not permitted

解决方案是以不同权限运行容器(安全性较低——不推荐在生产环境使用):

docker run --name "my-container" --cap-add=SYS_NICE --cap-add=DAC_READ_SEARCH vendor/image

更多信息请参考相关文档。

PHP邮件函数和Exim4问题

如果您安装了libapache2-mpm-itk,PHP邮件函数无法与exim4一起工作(!)
当WordPress尝试发送电子邮件时,exim会崩溃,在paniclog(/var/log/exim4/paniclog)中您会看到类似内容:

2023-01-30 19:25:27 unable to set gid=33 or uid=0 (euid=0): forcing real = effective

根据[mpm-itk官方页面]和[此资源],解决方案是在Apache配置中添加LimitUIDRange 0 2000。

nano /etc/apache2/conf-available/mpm_itk_with_php_mail.conf

添加指令:

LimitUIDRange 0 2000

最后:

a2enconf mpm_itk_with_php_mail
systemctl restart apache2.service

(可能对生产使用不安全)
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.zskr.cn/news/13170.html

相关文章:

  • sg.如何打开PySimpleGUI调试器窗口?
  • 腾讯开源 AudioStory!能生成 150 秒故事长音频,还会剧情拆解 + 自动配乐 - 详解
  • 9.27学习笔记
  • 开学日记
  • 论文解读-《Less is More on the Over-Globalizing Problem in Graph Transformers》 - zhang
  • day19_添加 修改
  • 2025 贵阳门窗店优选:丽格门窗,用 20 年匠心适配高原宜居需求
  • “鹏云杯”第十二届山东省大学生网络安全技能大赛 -- Crypto -- WriteUp
  • 9/27
  • 2025GUI工程实践:Unity编辑模式下GUI运行
  • 哦好多天没写了水一下吧
  • 如何在不绑定Apple账号的情况下备份florr.io
  • 7.WPF 的 TextBox 和 TextBlock 控件 - 实践
  • 深入解析:深入理解 Docker:从入门到实践
  • ⸢ 陆 ⸥ ⤳ 可信纵深防御:整体架构 - 实践
  • 安装 HuggingFace datasets 模块、包、库
  • 详细介绍:【序列晋升】45 Spring Data Elasticsearch 实战:3 个核心方案破解索引管理与复杂查询痛点,告别低效开发
  • 博客写作者该何去何从
  • JSON dump in Ruby
  • 详细介绍:python+django/flask+uniapp基于微信小程序的瑜伽体验课预约系统
  • GraphRAG对自然语言处理中深层语义分析的革命性影响与未来启示 - 教程
  • 详细介绍:云原生 vs 传统部署
  • 记录 | 关于陪伴型交互AI的一些探讨
  • luogu P1719 最大加权矩形
  • Laravel5.8 利用 snappyPDF 生成PDF文件
  • 数据结构——链表 - 详解
  • 25秋周总结4
  • 饥荒联机版
  • LinuxC++项目开发日志——基于正倒排索引的boost搜索引擎(5——通过cpp-httplib库建立网页模块) - 详解
  • 微信二次开发文档