用户与权限管理 — 从创建到精细化管控

📖 知识点简介

权限管理是运维的安全底线。Linux 是一个多用户系统,每个文件都有"主人"(owner)和"所属组"(group),并通过 rwx 三组权限位控制访问。从创建用户到权限精确配置,掌握这套体系是防止越权操作、保护系统安全的关键。

前两篇我们学了文件操作和进程管理,今天补齐用户、组、文件权限这个三角知识块。


🛠 核心命令整理

一、用户管理

命令 用途 常用参数
useradd 创建用户 -m 创建家目录 · -s 指定 shell · -g 指定主组 · -G 附加组
usermod 修改用户属性 -aG 追加到组 · -L 锁定 · -U 解锁 · -l 改登录名
userdel 删除用户 -r 一并删除家目录和邮件池
passwd 设置/修改密码 --stdin 从 stdin 读密码(脚本用)· -l / -u 锁定/解锁
chage 密码过期管理 -d 0 强制下次登录修改 · -M 90 90 天过期
id 查看用户 UID/GID 不加参数显示当前用户
who / w 谁登录了系统 w 显示更详细(负载、登录时间、当前命令)

二、组管理

命令 用途 常用参数
groupadd 创建组 -g 指定 GID
groupmod 修改组 -n 改组名
groupdel 删除组 ---
gpasswd 管理组成员 -a 添加用户 · -d 移除用户 · -M 设置成员列表

三、文件权限管理

命令 用途 常用参数
chmod 修改权限 符号法 u+x,g-w · 数字法 755, 644 · -R 递归
chown 修改所有者 chown user:group file · -R 递归
chgrp 修改所属组 -R 递归
umask 设置默认权限掩码 umask 0022 → 文件 644,目录 755
ls -l 查看权限 第一列如 drwxr-xr-- 标识文件类型 + 三组 rwx

四、高级权限(重点)

权限 表示 作用
SUID u+s / 4xxx 执行时以文件所有者身份运行,如 /usr/bin/passwd(常规用户也得改密码)
SGID g+s / 2xxx 目录下新建文件继承目录的所属组,团队协作常用
Sticky Bit o+t / 1xxx 目录内仅文件所有者可删,如 /tmp(权限 1777

💻 实操示例

场景一:新员工入职,创建运维账号

bash 复制代码
# 创建运维组
groupadd ops

# 创建用户,指定 shell、附加到 ops 组
useradd -m -s /bin/bash -G ops zhangsan

# 强制首次登录改密码
passwd zhangsan      # 设置初始密码
chage -d 0 zhangsan  # 强制下次登录修改

# 验证
id zhangsan
# 输出: uid=1002(zhangsan) gid=1002(zhangsan) groups=1002(zhangsan),1005(ops)

场景二:项目目录权限配置(SGID + ACL)

bash 复制代码
# 创建共享目录
mkdir -p /data/project

# 设置所属组
chown root:ops /data/project

# SGID + 读写执行(组成员可写)
chmod 2775 /data/project
# 2 -> SGID, 775 -> rwxrwxr-x

# 验证:组内用户新建文件
su - zhangsan -c "touch /data/project/test.txt"
ls -l /data/project/test.txt
# 输出: -rw-rw-r-- 1 zhangsan ops 0 ...  ← 组自动继承为 ops

场景三:日志文件只允许追加(防止篡改)

bash 复制代码
# 给日志文件设置不可变属性
chattr +a /var/log/app/audit.log
# +a 仅允许追加,不可删除/重命名(需 root)
lsattr /var/log/app/audit.log
# 输出: ----a--------e--- audit.log

⚠️ 常见坑点 / 注意事项

  1. useradd 不加 -m 可能没有家目录 --- 不同发行版默认行为不同,CentOS 默认创建,Ubuntu 默认不创建,加 -m 最保险。

  2. passwd --stdin 已弃用 --- 在脚本中批量改密码时,推荐用 echo "user:pass" | chpasswd 替代,兼容性更好。

  3. SUID 不要乱用 --- chmod u+s 给脚本或非必要二进制文件加 SUID 是安全大忌,攻击者可能利用提权。能用 sudo 就不用 SUID。

  4. Sticky Bit 忘了设 --- 共享目录不加 o+t,用户 A 可以删用户 B 的文件,生产环境容易出事故。

  5. umask 在脚本中也要注意 --- Shell 脚本里创建临时文件最好显式设置 umask 0077,防止其他用户读到敏感数据。

  6. chmod -R 伤及无辜 --- 递归改权限时慎用 chmod -R 777。若目录内有敏感执行文件(如密钥脚本),生产环境秒变"裸奔"。


相关推荐
大鸡腿同学2 小时前
大模型是怎么训练出来的?
后端
lizhongxuan2 小时前
判断一个人懂不懂 agent harness
后端
非洲农业不发达3 小时前
windows终端体验大升级,让你拥有macos级别的美化
前端·后端
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十七):登录接口完善,登录页接口整合,解决跨域
前端·后端·ai编程
SamDeepThinking3 小时前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员
shepherd1113 小时前
一文带你掌握 LLM、Token、Context、Prompt、RAG、MCP、Skill、Agent 等 AI 核心概念
人工智能·后端·ai编程
狂炫冰美式4 小时前
人均配了AI, 为什么公司还是没变快? 🤔 本质还是分布式系统问题
前端·后端·架构
她的男孩6 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
爱读源码的大都督6 小时前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端