云电脑多账号隔离,多人协同开发网站项目:云电脑多账号隔离
多人共用一台云电脑开发同一个网站项目时,最常见的问题就是环境互相干扰:A 改坏了系统依赖,B 的代码跑不起来;
或者两人同时改同一个文件,版本冲突不断。
解决这个问题的核心思路是:为每个开发者创建独立的系统账号,通过目录权限和 SSH 密钥实现隔离,同时用共享目录完成协作。
下面按步骤讲清楚怎么落地。
先规划好隔离结构和协作方式
在动手之前,需要先明确两件事:
- 每个开发者一个系统账号,例如
dev_zhang、dev_li,各自有独立的 home 目录和环境变量。 - 项目代码放在共享目录,例如
/srv/www/myproject,所有开发者账号加入同一个用户组(如webteam),组内成员可读写,组外成员无权限。
这种结构下,每个人的个人配置互不影响,但项目文件可以协同编辑。
如果需要更严格的隔离,也可以给每人克隆一份代码,通过 Git 合并,但本文重点讲共享目录模式。
创建账号并设置共享组
以下操作需要 root 或 sudo 权限,在云电脑终端执行。
1. 创建用户组
sudo groupadd webteam
2. 创建开发者账号并加入组
假设有两位开发者,分别创建账号:
sudo useradd -m -s /bin/bash -G webteam dev_zhang
sudo useradd -m -s /bin/bash -G webteam dev_li
参数说明:-m 创建 home 目录,-s 指定默认 shell,-G 追加到附加组。
3. 设置初始密码
sudo passwd dev_zhang
sudo passwd dev_li
按提示输入密码。
如果后续要用 SSH 密钥登录,密码可以设复杂一些或直接禁用密码登录。
4. 验证账号和组
id dev_zhang
输出中应包含 groups=... webteam,表示加入成功。
配置项目目录权限
项目目录的权限设置是隔离的关键。
目标:webteam 组内成员可以读写,其他用户无法访问。
1. 创建项目目录并设置属组
sudo mkdir -p /srv/www/myproject
sudo chown -R root:webteam /srv/www/myproject
2. 设置目录权限和 SGID 位
sudo chmod 2775 /srv/www/myproject
这里 2 是 SGID 位,
保证在该目录下新建的文件自动继承 webteam 组,
避免每次都要手动改属组。775 表示属主和属组可读写执行,
其他人只读执行——如果你希望其他人完全无权限,
可改为 2770。
3. 验证权限
切换到开发者账号测试:
sudo -u dev_zhang touch /srv/www/myproject/test.txt
ls -l /srv/www/myproject/test.txt
文件属组应为 webteam,且 dev_zhang 可以正常写入。
再用非 webteam 组账号测试,应该提示权限不足。
打通 SSH 密钥登录与隔离
多人协同通常通过 SSH 连接云电脑。
为每个开发者配置独立密钥,避免共用密码。
1. 在开发者本地生成密钥对(如果还没有)
ssh-keygen -t ed25519 -C "dev_zhang@company"
2. 将公钥上传到云电脑对应账号
在云电脑上切换到目标账号,创建 .ssh 目录并写入公钥:
sudo -u dev_zhang mkdir -p /home/dev_zhang/.ssh
sudo -u dev_zhang chmod 700 /home/dev_zhang/.ssh
sudo -u dev_zhang nano /home/dev_zhang/.ssh/authorized_keys
粘贴公钥内容后保存,然后设置权限:
sudo -u dev_zhang chmod 600 /home/dev_zhang/.ssh/authorized_keys
3. 测试登录
从本地执行:
ssh dev_zhang@云电脑IP
能免密登录即配置成功。
每个开发者只能登录自己的账号,无法直接切换到别人的 home 目录(除非有 sudo 权限)。
避坑指南:权限和协作常见问题
- 不要给所有开发者 sudo 权限。如果某人需要安装软件,可以由管理员统一安装,或使用
sudo白名单限制具体命令。 - SGID 只对目录生效,如果项目里已有文件属组混乱,用
sudo chgrp -R webteam /srv/www/myproject统一修正。 - Web 服务器运行用户不要直接加入 webteam。例如 Nginx 以
www-data运行,只需保证www-data对项目目录有读取权限即可,避免网站进程拥有写权限导致安全风险。 - 文件锁和编辑冲突。多人同时编辑同一文件时,建议约定使用 Git 分支协作,共享目录只作为部署目录,而不是直接编辑。
- 磁盘配额。如果云电脑多人共用,建议为每个账号设置磁盘限额,防止某个人占满空间影响其他人。
验证隔离效果和协作流程
完成以上配置后,按下面清单逐项验证:
- 每个开发者用自己的账号 SSH 登录,执行
whoami应显示自己的用户名。 - 在共享目录创建文件,属组自动为
webteam,其他开发者能修改,非组员无法访问。 - 开发者 home 目录之间互相不可读(默认权限 700 即可)。
- 网站服务能正常读取项目文件,但无法写入(除非业务需要)。
- 如果使用 Git,每个开发者配置自己的
user.name和user.email,提交记录清晰可追溯。
如果验证中发现某一步不生效,优先检查目录权限和用户组是否配置正确,再用 namei -l /srv/www/myproject 查看完整路径权限链。
常见疑问
多人协同一定要用共享目录吗?
不一定。如果项目对隔离要求极高,可以每人一个独立目录,通过 Git 推送合并。共享目录适合需要实时看到对方修改的场景,但要注意编辑冲突。
云电脑重启后权限会丢失吗?
用户、组和目录权限都保存在系统磁盘上,正常重启不会丢失。但如果云电脑使用临时磁盘或重置系统,配置会清空,建议把关键配置写入初始化脚本。
如何限制某个开发者只能访问指定目录?
可以通过 chroot 或容器方案实现更严格的隔离,但配置复杂度较高。对于普通网站项目协作,系统账号加目录权限已经足够。
Windows 开发者怎么接入?
Windows 10/11 自带 OpenSSH 客户端,可以直接用 ssh 命令登录;也可以用 VS Code Remote-SSH 插件连接云电脑,编辑体验接近本地。
按照以上步骤配置后,云电脑上的多账号隔离就能满足多人协同开发网站项目的基本需求。
重点记住:账号独立、组内共享、权限最小化,后续根据团队规模再调整即可。