You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04下/var/www目录SFTP上传自动继承www-data权限配置问题

Ubuntu 18.04 + Apache2 环境SFTP目录权限自动继承配置教程

适用场景:具备sudo权限的用户johndoe通过SFTP登录后,在/var/www目录下新建的所有内容,自动满足权限775、属主属组均为www-data,同时保障Apache服务与SFTP登录用户均有读写权限。


步骤1:将SFTP用户加入www-data用户组

将johndoe添加到Apache运行的用户组中,确保其有权限读写/var/www下的内容:

sudo usermod -aG www-data johndoe

注意:配置完成后需要重新登录johndoe账号,用户组配置才会生效。

步骤2:配置/var/www目录基础权限与SGID继承

  • 重置/var/www目录现有所有内容的属主与属组:
    sudo chown -R www-data:www-data /var/www
  • 配置现有目录与文件的基础权限为775:
    sudo chmod -R 775 /var/www
  • 给所有子目录添加SGID位,确保新建内容自动继承父目录的用户组,而非继承创建者的默认用户组:
    sudo find /var/www -type d -exec chmod g+s {} \;

步骤3:配置ACL规则实现全属性继承

Ubuntu默认未安装ACL工具,先完成安装:
sudo apt update && sudo apt install acl -y
依次执行以下命令配置/var/www的默认ACL规则,所有新建内容自动继承权限与属主属组:

  • 配置新建内容默认属主www-data拥有读写执行权限:
    sudo setfacl -R -m d:u:www-data:rwx /var/www
  • 配置新建内容默认属组www-data拥有读写执行权限:
    sudo setfacl -R -m d:g:www-data:rwx /var/www
  • 配置新建内容默认其他用户拥有读与执行权限:
    sudo setfacl -R -m d:o::rx /var/www

配置完成后可执行getfacl /var/www验证,返回结果中存在default开头的规则即为配置成功。

步骤4:配置SFTP服务umask补充保障

修改SSH配置避免SFTP默认umask覆盖权限规则:

  1. 打开SSH配置文件:sudo nano /etc/ssh/sshd_config
  2. 找到Subsystem sftp开头的配置行,默认值为:
    Subsystem sftp /usr/lib/openssh/sftp-server
  3. 修改为以下内容,设置SFTP默认umask为002(对应权限775):
    Subsystem sftp /usr/lib/openssh/sftp-server -u 002
  4. 保存退出后重启SSH服务生效:sudo systemctl restart sshd

可选优化权限方案

如果担心775权限过于宽松,可调整为755权限,仅需要做两处修改即可:

  • 步骤2中基础权限配置命令改为sudo chmod -R 755 /var/www
  • 步骤4中umask值改为022,即修改为Subsystem sftp /usr/lib/openssh/sftp-server -u 022
    该方案同样能满足Apache读权限、SFTP用户(属于www-data组)读写权限的需求,安全性更高。

生效验证

重新登录johndoe账号,通过SFTP在/var/www下新建测试文件与目录,执行ls -l 对应文件/目录路径,满足以下条件即为配置成功:

  • 权限位为rwxrwxr-x(775)或rwxr-xr-x(755,对应优化方案)
  • 属主与属组均为www-data

内容的提问来源于stack exchange,提问作者mck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:45:07