温馨提示×

ubuntu apache2如何设权限

小樊
43
2026-09-08 04:38:17
栏目: 智能运维

在 Ubuntu 上,Apache2 的“权限”主要分三层,很多人混淆了,其实通常是:

  1. Linux 文件系统权限(谁能动文件)
  2. Apache 运行用户权限(www-data)
  3. Apache 配置层权限(目录访问、.htaccess、虚拟主机)

下面按最常见场景说明。


一、Linux 文件 / 目录权限(最基础)

1. Apache 运行用户

Ubuntu 中 Apache 默认用户是:

www-data

查看:

ps aux | grep apache

2. 网站目录推荐权限

假设网站目录是:

/var/www/html

标准做法:

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

⚠️ 不建议直接 777,不安全


3. 如果你用普通用户上传文件

把你自己加入 www-data 组:

sudo usermod -aG www-data $USER

然后:

sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 775 /var/www/html

二、Apache 配置层权限(Directory 控制)

1. 允许 / 禁止目录访问

编辑虚拟主机或 apache 配置:

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

说明:

  • Require all granted:允许所有人访问
  • Require all denied:禁止访问
  • AllowOverride All:允许 .htaccess

修改后:

sudo systemctl restart apache2

2. 禁止列出目录(安全)

Options -Indexes

三、.htaccess 权限控制(常用)

1. 密码保护目录

AuthType Basic
AuthName "Restricted"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

生成密码:

sudo htpasswd -c /etc/apache2/.htpasswd user1

2. 禁止访问某些文件

<Files "config.php">
    Require all denied
</Files>

四、常见错误 & 解决

403 Forbidden

原因通常是:

  • 目录没有 Require all granted
  • 文件权限不对
  • index.html 不存在且 Indexes 关闭

检查:

sudo tail -f /var/log/apache2/error.log

五、总结(最常用)

# 改所有者
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 {} \;

# 重启
sudo systemctl restart apache2

如果你能告诉我:

  • 是想 限制访问?
  • 还是 上传文件没权限?
  • 还是 Laravel / WordPress 权限?

我可以给你更精确的配置。

0