Ubuntu Server 24.04下/var/www多站点多用户VS Code远程访问的权限配置方案咨询
嘿,针对你在Ubuntu Server 24.04上的多站点多用户权限需求,我整理了一套既满足VS Code远程读写、保证Apache正常服务,又遵循最小权限原则的配置方案,一步步来操作就行:
一、给每个站点创建专属用户组
咱们先给每个站点建一个独立的用户组,这样能精准控制谁能访问哪个站点,避免权限混乱:
- 创建site1的专属组:
sudo groupadd site1_group - 创建site2的专属组:
sudo groupadd site2_group
二、把需要访问站点的用户加入对应组
接下来把相关用户(包括你的MyUser)加到对应站点的组里,还要记得把Apache的系统用户www-data也加进去——毕竟Apache得能读取站点文件才能正常服务:
- 给site1添加授权用户:
sudo usermod -aG site1_group MyUser sudo usermod -aG site1_group Site1_UserA sudo usermod -aG site1_group Site1_UserB sudo usermod -aG site1_group www-data - 给site2添加授权用户:
sudo usermod -aG site2_group MyUser sudo usermod -aG site2_group Site2_UserA sudo usermod -aG site2_group www-data
小贴士:
-aG参数是追加组的意思,不会覆盖用户原来的组,不用担心影响用户其他权限。
三、调整站点目录的所有权与核心权限
这一步是关键,要保证组内用户能读写文件,Apache能正常访问,同时设置SGID位让新创建的文件自动继承组权限,省得后续手动调整:
设置站点目录的归属(以site1为例,site2操作完全一样):
sudo chown root:site1_group /var/www/site1把目录所有者设为root,组设为站点专属组,避免单个用户拥有目录导致权限失控。
设置目录权限为
2775(开启SGID位):sudo chmod 2775 /var/www/site12代表SGID位:以后用户在这个目录下创建的文件或子目录,会自动继承目录的组(也就是site1_group),不用每次手动改权限775:所有者和组内用户拥有读、写、执行权限,其他用户只有读和执行权限,兼顾灵活性和安全性
递归调整现有文件和子目录的权限:
sudo find /var/www/site1 -type d -exec chmod 2775 {} \; sudo find /var/www/site1 -type f -exec chmod 664 {} \;这行命令会把site1下所有子目录设为
2775,所有文件设为664,确保现有内容也符合权限要求。
四、配置用户默认权限(可选但推荐)
为了让用户通过VS Code远程创建的文件默认就有正确的权限,咱们可以调整用户的umask值:
让每个需要访问站点的用户编辑自己的~/.bashrc或~/.profile文件,添加一行:
umask 002
修改后让用户重新登录服务器,或者执行source ~/.bashrc生效。这样用户创建的文件默认权限是664,目录是775,刚好匹配咱们的站点权限需求,省得每次手动改。
五、验证配置效果
- 让用户通过VS Code的Remote-SSH扩展连接服务器,打开对应站点目录,尝试创建、修改文件,应该能正常操作
- 访问网站,确认Apache能正常加载页面,没有权限报错
安全小提醒
- 绝对不要给站点目录设置
777权限,这会让任何用户都能修改文件,严重威胁服务器安全 - 定期检查用户组归属,及时移除不再需要访问站点的用户
- 如果站点有上传目录,可以单独给该目录设置权限:把组设为
www-data,权限设为2775,这样Apache能写入上传文件,组内用户也能管理这些文件
备注:内容来源于stack exchange,提问作者Craig

