一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Ubuntu Apache 权限设置详解

时间:2026-07-24 08:49:48 编辑:袖梨 来源:一聚教程网

Ubuntu Apache 权限设置指南

Ubuntu Apache权限设置指南

一 基础安全原则

  • 运行身份与文件属主:以 www-data:www-data 运行 Apache,网站目录与文件建议归属同一用户组,便于协作与最小权限控制。
  • 最小权限:目录用 755,普通文件用 644;可执行文件或上传目录按需收紧,避免使用 777。
  • 访问控制:优先在 Apache 配置中用 与 Require 指令控制访问,其次再考虑 .htaccess。
  • 安全模块:Ubuntu 默认启用 AppArmor;如启用 SELinux 需额外策略。
  • 变更生效:修改后使用 systemctl restart apache2 或 reload 使配置生效。

二 文件与目录权限设置

  • 推荐基线(适用于 /var/www/html 或你的 DocumentRoot):
    # 设置属主与属组sudo chown -R www-data:www-data /var/www/html# 目录 755,文件 644sudo find /var/www/html -type d -exec chmod 755 {} ;sudo find /var/www/html -type f -exec chmod 644 {} ;
  • 需要写入的目录(如 uploads、cache):
    sudo chown -R www-data:www-data /var/www/html/uploadssudo chmod 775 /var/www/html/uploads
  • 禁止目录浏览:确保未启用 Indexes;如需临时排查再开启。
  • 切勿使用 chmod -R 777 解决权限问题,这会破坏最小权限原则。

三 Apache 运行身份与虚拟主机配置

  • 确认运行身份:
    ps aux | grep apache2
  • 如需变更运行用户/组,编辑 /etc/apache2/envvars:
    sudo nano /etc/apache2/envvars# 修改:export APACHE_RUN_USER="www-data"export APACHE_RUN_GROUP="www-data"
  • 虚拟主机示例(位于 /etc/apache2/sites-available/yourdomain.com.conf):
    <VirtualHost *:80>ServerAdmin [email protected] yourdomain.comDocumentRoot /var/www/yourdomain.com<Directory /var/www/yourdomain.com>Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>
  • 启用站点并重启:
    sudo a2ensite yourdomain.com.confsudo systemctl reload apache2
  • 访问控制示例:
    • 基于 IP:
      <Location "/admin">Require ip 192.168.1.0/24 203.0.113.10</Location>
    • 基于 Basic 认证:
      sudo a2enmod auth_basic authn_filesudo htpasswd -c /etc/apache2/.htpasswd admin
      <Location "/admin">AuthType BasicAuthName "Restricted Area"AuthUserFile /etc/apache2/.htpasswdRequire valid-user</Location>

四 安全加固与运维要点

  • AppArmor:检查状态并视需调整策略
    sudo aa-status# 按需编辑 /etc/apparmor.d/usr.sbin.apache2 并 reloadsudo systemctl reload apparmor
  • SELinux(如系统启用):设置内容类型或临时/永久调整策略
    sestatussudo chcon -Rv --type=httpd_sys_content_t /var/www/html# 或策略调整(示例)sudo setenforce 0 # 临时sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config# 永久示例
  • 防火墙:放行 HTTP/HTTPS
    sudo ufw allow 'Apache Full'
  • 日志排查:
    sudo tail -f /var/log/apache2/error.logsudo tail -f /var/log/apache2/access.log
  • 运维建议:定期审计权限与属主、最小化 AllowOverride 的使用、禁用不必要的模块与目录浏览。

五 常见问题与排查

  • 403 Forbidden:目录缺少执行权限(目录应为 755),或 DocumentRoot 的 未正确设置 Require all granted。
  • 500 或 .htaccess 不生效:确认 AllowOverride 不是 None,且已启用所需模块(如 mod_rewrite)。
  • 上传失败或写入异常:确保目标目录属主为 www-data 且权限为 775(或更严格)。
  • 端口未放行:使用 ufw 放行 Apache Full 或相应端口。
  • 配置语法与生效:使用 apache2ctl configtest 检查语法,变更后用 systemctl reload apache2 生效。

热门栏目