Linux服务器下如何配置使普通用户与www-data均可编辑网站文件
解决方案
1. 重置网站目录归属与基础权限
进入你的网站根目录后依次执行以下命令:
- 将目录下所有文件的所有者设为
user、所属组设为www-data
sudo chown -R user:www-data ./
- 给所有目录设置
2775权限,其中setgid位(前缀的2)可以保证后续新建的文件/目录自动继承父目录的www-data组属性,避免新文件组归属错误
sudo find ./ -type d -exec chmod 2775 {} \;
- 给所有现有文件设置读写权限,保证所有者和组用户都可以编辑
sudo find ./ -type f -exec chmod 664 {} \;
2. 修正用户默认umask配置
添加组后不生效的核心原因之一是默认umask限制了组用户的写入权限,默认umask为022时,新建文件的组权限只有读没有写,需要修改为002:
- 编辑
user用户的~/.profile或~/.bashrc文件,在末尾添加一行:
umask 002
修改后执行source ~/.bashrc或者重新登录user用户即可生效,后续新建文件默认权限为664、目录默认权限为775,组用户自动获得写入权限。
- 如果Web服务会主动生成缓存、上传类文件,需要同步修改Web服务运行用户的umask为
002:- Apache用户修改
/etc/apache2/envvars文件,添加umask 002配置后重启服务 - Nginx用户修改systemd启动配置或者启动脚本,添加umask配置后重启服务
- Apache用户修改
3. sshfs挂载额外适配
如果通过sshfs挂载后权限仍然不符合预期,挂载时添加umask和组参数即可:
sshfs user@服务器地址:/网站根目录路径 /本地挂载路径 -o umask=002,gid=$(id -g www-data)
提示:如果之前仅添加了用户组但没有重新登录
user用户,组权限不会生效,操作完上述步骤后建议重新登录一次验证。
内容的提问来源于stack exchange,提问作者nullbyte
相关产品推荐
相关产品推荐

