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

📖 知识点简介

权限管理是运维的安全底线。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 小时前
用 Tkinter 实现简单的论语第一章阅读器
后端·python
霸道流氓气质2 小时前
Spring Boot Multipart 表单中文乱码问题全解析
java·spring boot·后端
长栎2 小时前
Spring Boot 自动配置的3种设计模式,比 @Autowired 更值得搞懂
后端
长栎2 小时前
读 Kafka 源码才知道,你写的观察者模式就是个玩具
后端
胡萝卜术2 小时前
从零搞懂 AJAX:手把手带你从 XMLHttpRequest 到 fetch,彻底理解前后端数据交互
前端·后端·面试
XovH2 小时前
Redis 从入门到精通:分片之道 —— Redis Cluster
后端
XovH2 小时前
Redis 从入门到精通:Redis Sentinel 哨兵
后端
用户938515635072 小时前
从零实现一个 Todos 应用:原生 Ajax + Node 服务,顺便吃透 JSON.stringify
前端·javascript·后端
霸道流氓气质2 小时前
Spring Boot 文件上传大小限制配置全解析
spring boot·后端·firefox