温馨提示×

ubuntu apache2怎样设权限

小樊
46
2026-10-08 01:51:24
栏目: 智能运维

在 Ubuntu 上,Apache2 的“权限”通常涉及三个方面:

  1. 文件系统权限(谁能动文件)
  2. Apache 运行用户权限(www-data)
  3. 站点目录 / 虚拟主机访问控制

下面按常见场景说明。


一、Apache 的运行用户

Ubuntu 中 Apache 默认以 www-data 用户和组运行:

ps aux | grep apache2

配置文件中可见:

/etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

二、网站目录权限(最常见)

1. 推荐目录结构

/var/www/html/example.com

2. 设置目录和文件权限(安全且常用)

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

含义:

  • 目录:755
  • 文件:644
  • 属主:www-data

如果是开发环境,也可以把你的用户加入 www-data 组,避免每次 sudo。


三、如果你用普通用户开发(推荐)

sudo usermod -aG www-data $USER
sudo chown -R $USER:www-data /var/www/html/example.com
sudo chmod -R 775 /var/www/html/example.com

然后重新登录。


四、Apache 访问控制(目录权限)

在虚拟主机或 .htaccess 中控制访问。

1. 禁止访问某目录

<Directory /var/www/html/example.com/private>
    Require all denied
</Directory>

2. 允许访问

<Directory /var/www/html/example.com/public>
    Require all granted
</Directory>

修改后重启:

sudo systemctl restart apache2

五、.htaccess 权限

确保 Apache 允许:

<Directory /var/www/html/example.com>
    AllowOverride All
</Directory>

否则 .htaccess 不生效。


六、上传目录(如 WordPress)

sudo chown -R www-data:www-data /var/www/html/example.com/wp-content/uploads

七、常见错误

❌ 权限 777(不安全)
❌ 用 root 跑 Apache
❌ 目录没有 Require all granted

✅ 最小权限原则


如果你能说明:

  • 是 网站根目录 / 上传目录 / API 接口
  • 是 生产还是开发
  • 用的 PHP / Python / 静态页

我可以给你一套更精确的权限方案。

0 踩