服务器账号权限分级安全管理从零上手教程

为什么服务器账号要分级管

很多新手买来服务器后,一直用 root 操作所有事,这就像把家里大门钥匙挂脖子上到处跑。
一旦脚本被注入或密码泄露,攻击者就能拿到整个服务器的控制权。权限分级的意思就是:给不同的人分配不同的“开门权限”——比如开发人员只能操作自己的项目目录,运维人员可以重启服务,只有你(管理员)能改系统配置。
这样即使某个账号被攻破,损失也被限制在小范围内。

开始权限分级前需要做哪些准备

  • 一台 Linux 服务器(本文以 CentOS 7/8 为例,Ubuntu 命令略有差别会注明)。
  • 已通过 SSH 登录到服务器(使用 root 或一个有 sudo 权限的初始账号)。
  • 知道当前服务器上已有的用户列表(用命令 cat /etc/passwd 可以查看)。
  • 确认是否安装了 sudo(一般系统自带,没有则通过 yum install sudo / apt install sudo 安装)。

三步搭建账号权限分级体系

第一步:创建不同角色用户

假设你的团队里有一个开发人员(名叫 dev1)、一个运维人员(名叫 ops1)、以及你自己(管理员 admin1)。
先创建普通用户,再初始化密码。

useradd dev1
passwd dev1   # 输入两次密码

useradd ops1
passwd ops1

useradd admin1
passwd admin1

id dev1 可以查看新用户的 UID、GID 和所属组。
默认每个用户都会创建同名的组(比如 dev1 组)。

第二步:用 sudo 文件精细控制权限

/etc/sudoers 文件控制哪些用户能执行哪些特权命令。千万不要直接编辑源文件,用 visudo 命令安全编辑:

visudo

在文件末尾添加以下规则(每条一行):

# 管理员可以执行所有命令,相当于 root
admin1 ALL=(ALL)   ALL

# 运维人员可以执行服务管理相关命令(systemctl、service)和服务日志查看
ops1   ALL=(ALL)   /usr/bin/systemctl, /usr/sbin/service, /usr/bin/journalctl

# 开发人员只能执行自己的项目目录操作,其余命令需要申请
# 这里只允许 dev1 重启自己的项目服务(假如项目名叫 myproject)
dev1   ALL=(ALL)   /usr/bin/systemctl restart myproject, /usr/bin/systemctl status myproject

保存退出(visudo 会自动检查语法)。注意:Ubuntu 上 systemctl 路径可能为 /bin/systemctl,请用 which systemctl 确认。

如果想让 dev1 完全不能执行任何 sudo 命令(只能用自己的普通权限),就不添加任何规则,但通常要给最低限度的操作能力,否则他连查看系统状态都做不了。

第三步:用用户组和目录权限锁死访问范围

创建一个名为 project_dev 的组,把开发人员放进去,再设置项目目录的所属组和权限。

groupadd project_dev
usermod -aG project_dev dev1
# 如果需要其他开发者也加进来
# usermod -aG project_dev dev2

# 假设项目目录在 /opt/myproject
chown -R root:project_dev /opt/myproject
chmod -R 750 /opt/myproject   # 所有者(root)读写执行,同组(project_dev)读和执行,其他人无权限

此时 dev1 只能通过 cd /opt/myproject 读取和执行文件,但不能修改(除非特别需求则把 750 改成 770 允许同组写)。
你也可以用 ACL 做更细的控制,新手阶段用组权限基本足够。

踩坑最多的四个问题

Q1:visudo 编辑保存时提示语法错误

原因:命令路径写错或漏了逗号 / 空格。
visudo -c 检查语法,修复后再退出。

Q2:用户执行 sudo 时提示「不在 sudoers 文件中」

原因:该用户没有配置 sudo 规则。
回看第二步,用 visudo 添加对应条目。

Q3:普通用户无法读取项目文件

原因:目录或文件的所有者/权限不对。
检查 ls -l /opt/myproject,确保用户所在组和目录组一致,且目录权限至少 750(用户是组内成员)。

Q4:忘了禁用 root 远程登录

权限分级的一个辅助措施是禁止 root 通过 SSH 直接登录。
修改 /etc/ssh/sshd_config,找到 PermitRootLogin 设置为 no,然后重启 SSH 服务,这样攻击者无法直接爆破 root 密码。

如何验证权限是否生效

  1. 用各账号分别 SSH 登录(先测试普通用户能否登录)。
  2. 测试 sudo 命令
# 用 admin1 登录
sudo systemctl restart nginx   # 应该成功

# 用 ops1 登录
sudo systemctl restart nginx   # 成功(已授权)
sudo useradd test2              # 应该提示没有权限

# 用 dev1 登录
sudo systemctl restart nginx   # 失败(仅允许操作 myproject)
sudo systemctl status myproject # 成功
  1. 测试目录访问
su - dev1
cd /opt/myproject && ls   # 应该可以列出文件
touch test.txt             # 如果权限是750则失败(没有写权限)
  1. 检查 sudo 日志:所有 sudo 执行记录都会写入 /var/log/secure(CentOS)或 /var/log/auth.log(Ubuntu)。用 tail -f /var/log/secure 实时查看,确保没有意外的 sudo 调用。

完成以上步骤后,一个基本的 服务器账号权限分级 环境就搭好了。
实际生产环境还需要结合密钥认证、双因素、审计日志等,但今天的内容已经能帮你把风险降低 80% 以上。
如果你正在处理这项配置,建议先按本文步骤完整执行,再根据自己的环境微调规则;
遇到异常时优先回看“踩坑最多的四个问题”,基本都能解决。

分享到:
上一篇
手把手教你服务器防火墙规则精准配置
下一篇
服务器被暴力破解拦截防护教程指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意