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

📖 知识点简介

权限管理是运维的安全底线。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 小时前
Deepseek涨价了,前后对比,竟然差这么多
后端
东风破_3 小时前
大前端手里的 Next.js:从 #root 到 SEO,一份 HTML 的两种命运
前端·后端
IT_陈寒3 小时前
Vue的v-for不听话?我被这个Key的坑整懵了
前端·人工智能·后端
众人皆醒我独醉3 小时前
训练加速实战:Flash Attention、Gradient Checkpointing 与数据流水线
后端·面试·gpu
阿黎梨梨3 小时前
Next.js 全栈开发:从 SPA 的痛点到 SSR 的破局之道
前端·后端
名字还没想好☜4 小时前
Go 的 unsafe.Pointer 实战:零拷贝 []byte↔string 转换与三条铁律
开发语言·后端·golang·go·unsafe
老孙讲技术4 小时前
周末档期厨房爆单,带宽账单也爆了——不是直播难,是主码流 + always 计划在烧钱
后端·物联网
老孙讲技术4 小时前
校园开放日前夜才说要「全校透明」?我用轻应用把 9 路教室预览和回放嵌进了校园后台
后端·物联网
Python私教4 小时前
AI Agent 可观测性实战:从 correlationId 到失败时间线
人工智能·后端
用户7791666846545 小时前
给 Agent 开权限:身份不能进模型的上下文
后端