温馨提示×

Apache2 Ubuntu如何权限

小樊
37
2026-09-20 13:07:17
栏目: 智能运维

在 Ubuntu + Apache2 环境下,“权限”通常涉及 文件权限、目录权限、Apache 运行用户、以及 SELinux/AppArmor 等。下面按常见场景系统说明。


一、Apache 在 Ubuntu 中的运行用户

Ubuntu 下 Apache2 默认运行用户是:

www-data

查看:

ps aux | grep apache2

二、网站目录推荐权限(最重要)

1️⃣ 推荐目录结构

/var/www/
└── html/
    └── example.com/
        ├── index.php
        └── uploads/

2️⃣ 推荐权限设置

sudo chown -R www-data:www-data /var/www/html/example.com
sudo chmod -R 755 /var/www/html/example.com
  • 目录:755(drwxr-xr-x)
  • 文件:644(-rw-r--r--)
find /var/www/html/example.com -type d -exec chmod 755 {} \;
find /var/www/html/example.com -type f -exec chmod 644 {} \;

三、需要“写权限”的目录(如上传)

sudo chown -R www-data:www-data /var/www/html/example.com/uploads
sudo chmod -R 775 /var/www/html/example.com/uploads

⚠️ 不建议 777(安全风险)


四、用户自己管理文件(开发常用)

如果你用自己的用户(如 ubuntu)传文件:

方法 1:把用户加入 www-data 组

sudo usermod -aG www-data ubuntu

然后:

sudo chown -R ubuntu:www-data /var/www/html/example.com
sudo chmod -R 775 /var/www/html/example.com

五、Apache 配置权限(Directory 指令)

编辑站点配置:

sudo nano /etc/apache2/sites-available/example.conf

示例:

<Directory /var/www/html/example.com>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

启用:

sudo a2ensite example.conf
sudo systemctl reload apache2

六、.htaccess 不生效?

确保:

AllowOverride All

否则 .htaccess 权限无效。


七、Ubuntu 的 AppArmor(容易忽略)

Apache 受 AppArmor 限制:

查看:

sudo aa-status

如访问非 /var/www 目录被拒:

sudo nano /etc/apparmor.d/disable/usr.sbin.apache2
sudo systemctl reload apparmor

(生产环境慎用 disable)


八、SELinux(Ubuntu 默认无)

Ubuntu 默认没有 SELinux,无需处理。


九、常见错误 & 解决

问题 原因
403 Forbidden 目录无 Require all granted
500 错误 .htaccess 语法或权限
无法写入 属主不是 www-data
文件无法删除 用户不在 www-data 组

十、最简“安全可用”模板

sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

如果你有 具体场景(如 Laravel / WordPress / 上传报错 / 403),我可以直接给你针对性命令。

0 踩