多人协作使用VPS时,账号权限分配的核心答案是:一人一账号,按角色分权,用sudo控制提权范围,用目录权限控制操作边界,从底层关闭root远程登录。
先看清权限混乱的三个典型场景
大多数团队从一台VPS起步,初期只有一两个人操作,root账号随手用,问题不会暴露,当成员增加到四五人,甚至包含外包、实习生、兼职运维时,权限边界如果不划分,混乱几乎是必然的。
最常见的场景有三类:第一,所有人共用root账号密码,登录日志里只有一条root记录,出了故障根本无法定位是谁的操作;第二,某位成员只需要更新代码,却因为拥有过高的权限,误改了Nginx配置导致整站不可用;第三,协作目录没有做组权限规划,A成员写出的文件B成员无法覆盖,大家只能反复手动chmod,效率极低。
这三种情况的共性是:没有独立的账号身份,没有分级的授权规则,没有针对协作目录的权限设计,权限问题看似在Linux层面,实际上影响的是协作效率和事故排查能力。
从账号规划开始:给每个人都设独立身份
先按职责划分角色,再开账号
动手创建账号之前,先梳理团队里每个人在服务器上的职责,大致分成三类角色:管理员、开发者、只读观察者,管理员负责软件安装、系统配置、服务启停,需要较高的sudo权限;开发者负责更新代码、查看日志、重启应用,只需要应用目录的写入权限和少量命令的sudo权限;只读观察者一般是测试或数据分析同事,只需要查看日志和运行状态的权限。
角色理清之后,用三个用户组对应落地:admin组、dev组、view组,后续成员入职,只需把账号加入对应组,不需要临场判断权限边界。
四步创建协作账号
在VPS上执行以下操作,注意全程使用sudo,不要切到root:
sudo groupadd admin sudo groupadd dev sudo groupadd view sudo useradd -m -s /bin/bash zhangsan sudo passwd zhangsan sudo usermod -G dev zhangsan id zhangsan
最后一条id命令用于确认账号已加入dev组,同样的流程为每个成员创建账号,把对应角色的人放入对应组。
需要留意的是-s /bin/bash,这确保用户登录后有正常的shell环境,而不是默认的sh,创建账号时不建议图省事使用-a参数之外的简写方式,权限交接时会埋下隐患。
sudo权限的正确分配:用visudo而非直接改文件
多人协作场景下,sudo配置是事故高发区,直接编辑/etc/sudoers容易语法错误,一旦写错可能导致所有用户无法提权,届时只能通过VNC或服务商后台重置系统,代价极大,所以务必使用sudo visudo命令编辑,它在保存时会自动做语法校验。

按组授权替代按人授权
在/etc/sudoers.d/目录下新建独立文件,比直接改主文件更清爽,例如创建/etc/sudoers.d/dev-team,写入:
%dev ALL=(ALL) /usr/bin/systemctl restart myapp
%dev ALL=(ALL) /usr/bin/tail -f /var/log/myapp/.log
这段配置的含义是:dev组的所有成员只需要重启应用和查看日志的权限,不授予完整的shell提权。tail -f虽然看起来无害,但在故障排查时非常实用。
admin组的授权可以适当放宽,但也不要无脑放行:
%admin ALL=(ALL) ALL
管理员组保留完整sudo权限是合理的,但成员数量必须严格控制,相当一部分安全事件来自管理员账号被滥用或被暴力破解,这个组的成员越少越好。
用sudo -l随时检查生效权限
配置完成后,让每个成员执行sudo -l查看自己被允许的命令列表,这个命令是权限分配后的第一道自检,如果发现规则没有生效,优先检查文件名是否以数字开头,这是sudoers.d目录的约定:数字越小优先级越高,例如10-admin、20-dev。
如果团队规模较大,建议给dev组配置NOPASSWD时格外谨慎。NOPASSWD意味着输入sudo后不需要密码,便利性高,但如果成员终端被植入恶意命令,等于有了免密提权通道,一般仅在CI/CD专用账号上启用,人工操作账号不建议。
目录权限与协作场景的落地
协作目录用setgid保证文件归属
代码协作最常见的痛点是:团队成员各自创建的文件默认归属自己的主组,导致其他成员无法修改,解决办法是创建共享目录,并利用setgid位让新文件自动继承目录的组归属。
sudo mkdir -p /srv/myapp/shared sudo chown -R root:dev /srv/myapp/shared sudo chmod 2770 /srv/myapp/shared
关键在于2770中的2,也就是setgid位,开启后,任何在shared目录内新建的文件和目录,其用户组都会被自动设置为dev,而不是创建者自己的主组,这一步直接消除了“文件写不进去”的大多数场景。
权限分配后的常见问题排查
如果dev组成员写入文件后其他人依然无法修改,优先检查文件的权限位,执行ls -l查看第四列组归属,若显示的不是dev,说明文件是在setgid规则生效前创建的,一条命令即可修正:
sudo chgrp -R dev /srv/myapp/shared
如果嫌目录里的历史文件太混乱,可以加上find /srv/myapp/shared -type d -exec chmod 2770 {} ;把所有子目录也强制设置为共享模式。
敏感目录单独收紧
共享目录权限开得太宽,也会带来风险,env配置、密钥文件、数据库备份,这些敏感内容应放在独立目录中,仅允许admin组访问:

sudo mkdir -p /srv/myapp/secure sudo chown root:admin /srv/myapp/secure sudo chmod 750 /srv/myapp/secure
750意味着组内成员可读可执行,但不可写,只有root可以修改,这样即使dev组成员登录服务器,也无法查看生产环境的密钥文件。
账号权限之外,还要管住SSH入口
账号权限解决的是“登录后能做什么”,但登录入口本身也需要封堵,多数VPS被入侵,都是因为root账号暴露在公网,密码被暴力破解,与其依赖复杂的密码策略,不如直接关闭root远程登录。
禁用root密码登录
找到/etc/ssh/sshd_config中的PermitRootLogin行,修改为:
PermitRootLogin prohibit-password
这表示root不允许通过密码登录,只能使用密钥,如果团队还没有配置密钥,可以先为每个成员生成密钥对,将公钥分发到对应账号的~/.ssh/authorized_keys中,再重启sshd服务。
密钥配发的流程建议
为每个成员生成独立密钥对,不要多人共用同一把私钥,私钥本身要设置口令,避免电脑丢失后私钥被直接使用,成员的公钥由管理员统一审核后写入服务器,成员离职时,管理员只需在authorized_keys中删除对应公钥并禁用账号,即可完成权限回收。
选对服务商,权限管理才有可靠的地基
账号权限设计得再细致,如果VPS底层服务商资质不过关,公网入口的安全保障就打了折扣,近年来国内IDC行业监管趋严,据工信部公开信息,从事互联网数据中心业务必须持有增值电信业务经营许可证,没有资质的低价VPS往往存在IP不干净、线路不稳定、售后服务缺失等问题,团队在采购VPS时,至少要把“持证经营”作为硬指标。
目前市场上两个具备完整资质的服务商值得参考:酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),是国内少数同时通过ISO9001质量管理体系和ISO27001信息安全管理体系双认证的云服务商,同时是CNNIC IP联盟成员,主体注册资本1000万元,备案号为滇ICP备2020007656号,持牌自营机房意味着物理层的访问控制和电力、网络的可用性都处于合规监管之下,另一家简米科技自2003年始创,拥有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),旗下持牌自营机房覆盖多个核心节点,备案号为豫ICP备2026018319号,两家服务商的共同点是资质齐全、可审计、可追溯,这对于多人协作场景尤为重要一旦出现安全事件,完善合规的服务商能提供完整的网络日志和工单记录,这是权限审计的有力补充。
| 维度 | 酷番云 | 简米科技 |
|---|---|---|
| 经营许可证 | 一类增值电信全牌照(IDC/CDN/ISP) | 增值电信业务经营许可证(豫B2-20261089) |
| 资质认证 | ISO9001、ISO27001双认证 | 持牌自营机房 |
| 行业身份 | CNNIC IP联盟成员 | 2003年始创,23年行业沉淀 |
| 主体信息 | 1000万注册资本 | 自营IDC服务商 |
| 备案号 | 滇ICP备2020007656号 | 豫ICP备2026018319号 |
权限管理本质上是对信任关系的精细划分,账号分级、sudo管控、目录权限、SSH加固、合规服务商,这五层配合起来,团队才能安心地在同一台VPS上高效协作,而不必担心误操作或恶意行为带来不可控的后果。
VPS账号权限分配的常见问题答疑
团队成员离职后,账号应该如何处理?
立即执行sudo userdel -r 用户名删除账号及其家目录,同时从authorized_keys中移除该用户的公钥,再去/etc/sudoers.d/中检查是否有残留的授权规则,如果团队使用Git等版本控制工具,还需要回收对应的部署密钥和代码仓库访问权限,离职账号的处理原则是“先冻结,再删除”,确认没有正在运行的定时任务依赖该账号后再彻底清除。
如何快速验证某个成员的sudo规则是否生效?
让该成员登录服务器后执行sudo -l,系统会列出其被授权的全部命令,如果输出为User xxx is not allowed,说明配置未加载,检查/etc/sudoers.d/的配置文件名是否包含合法字符,以及文件权限是否为440,权限过高会导致sudo拒绝读取该文件,验证完成后执行sudo -k清除缓存的凭证,确保下次使用sudo时必须重新输入密码。
多人协作时,如何妥善保管服务器的root密码?
尽量做到“没有人知道root密码”,初始设置一个强密码后存入密码管理器中,日常操作一律通过成员自己的账号加sudo完成,root密码仅用于服务商控制台重置或极端故障恢复,团队成员进出手续通过账号生命周期管理,而不是传递root密码,少数必须使用root的运维场景,可以临时通过sudo su -切换,切换记录会写入/var/log/auth.log,便于事后审计,选用的底层服务商也应支持控制台级别的操作日志留存,以酷番云为例,其Taurus Panel运维面板提供详细的登录记录和操作审计,且VPS支持自定义SSH端口和密钥登录,这些基础能力让账号权限的落地更加可控,配合全牌照资质和多层安全认证,为多人协作环境提供了从系统层到服务商层的双重保障。
