Linux 用户、组与权限、提权完整保姆教程(新手友好)
> 前置基础:Linux 基础命令、/etc/passwd 基础认知
目录
本地用户实操综合案例
手动创建用户 + 家目录各类故障修复
用户组全套命令:groupadd/groupmod/groupdel/groupmems
用户密码管理 /etc/shadow 详解 + chage 密码时效控制
用户锁定、禁用、UID0 高危账号讲解
系统支持的 Shell 类型
用户切换工具 su 完整用法区分
安全提权工具 sudo 配置与实战
Linux 文件基础权限入门
全文核心总结
一、本地用户实操综合案例
operator1 用户完整实操流程
# ========== 1、创建普通用户operator1 ==========
# useradd 默认行为:自动生成同名主组、自动创建/home/operator1家目录、默认shell /bin/bash
useradd operator1
# ========== 2、id查看用户完整身份信息 ==========
# id 输出uid(用户ID)、gid(主组ID)、所有附属组列表
id operator1
# ========== 3、过滤查看/etc/passwd中operator条目 ==========
# ^operator1: 精准匹配行首,防止匹配包含operator1的无关字符串
grep "^operator1:" /etc/passwd
# ========== 4、设置用户密码redhat ==========
# 方式1:交互式输入密码(手工操作推荐,输入密码屏幕不回显)
passwd operator1
# 方式2:非交互管道设置,脚本批量自动化使用(仅RHEL/CentOS支持–stdin)
echo red | passwd –stdin operator1
# ========== 5、修改用户UID为1088 ==========
# -u 指定新UID编号,UID全局唯一
usermod -u 1088 operator1
# 修改UID后,家目录内文件属主不会自动同步,必须递归修复权限,否则文件无法读写
chown -R operator1:operator1 /home/operator1
# 再次校验UID是否修改成功
id operator1
# ========== 6、修改用户备注描述信息 ==========
# -c 修改passwd第五段GECOS注释字段,用于标注用户身份
usermod -c "Operator One" operator1
# 查看修改后的passwd条目
grep "^operator1:" /etc/passwd
# ========== 7、追加wheel管理员附属组 ==========
# -a 代表append追加;大写G代表附属组;不加-a会清空原有全部附加组
usermod -aG wheel operator1
# 验证附属组是否新增wheel
id operator1
# ========== 8、查看/etc/group中wheel组内容 ==========
# wheel组是CentOS管理员特权组,组末尾逗号分隔所有附属用户
grep "^wheel:" /etc/group
# ========== 9、彻底删除用户 ==========
# -r 参数:同步删除用户家目录 /home/operator1 和对应系统邮件文件
userdel -r operator1
二、底层原理:手动创建用户(不使用 useradd)
useradd 会自动修改系统配置、创建家目录;手动修改能理解用户存储底层逻辑
# ========== 1、手动编辑/etc/passwd添加用户基础信息 ==========
vim /etc/passwd
# 文件末尾新增一行,7段用冒号分隔,UID/GID选用未占用数字
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
# ========== 2、手动编辑/etc/group创建同名主组 ==========
vim /etc/group
# 组格式:组名:密码占位:GID:附属用户(空代表无附属成员)
zhangsan:x:1002:
# ========== 3、手动编辑/etc/shadow写入加密密码 ==========
vim /etc/shadow
# 第二段为加密密码串,密码明文为redhat
zhangsan:$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk::0:99999:7:::
# ========== 4、复制系统骨架文件到家目录 ==========
# /etc/skel存放用户初始配置模板(.bashrc .bash_profile等环境文件)
cp -r /etc/skel/ /home/zhangsan
# ========== 5、修改家目录归属用户与组 ==========
chown zhangsan:zhangsan /home/zhangsan
# ========== 6、查看家目录权限验证 ==========
ll -d /home/zhangsan
# ========== 7、ssh本地登录测试账号 ==========
ssh zhangsan@localhost
用户家目录三大常见故障与修复
故障 1:登录提示符变为 -bash-4.2$
故障原因:全局 shell 配置文件 /etc/bashrc 丢失,无法加载提示符样式
# 模拟故障:备份改名原文件
mv /etc/bashrc{,.ori}
# 新开终端复现异常提示符
bash
# 恢复原配置文件
mv /etc/bashrc{.ori,}
# 重新打开终端生效
bash
故障 2:登录提示 No such file or directory 找不到家目录
# 模拟故障:彻底删除用户家目录
rm -fr /home/zhangsan
# 修复步骤1:重新复制系统骨架模板
cp -r /etc/skel/ /home/zhangsan
# 修复步骤2:递归修改目录归属
chown zhangsan:zhangsan /home/zhangsan
故障 3:家目录权限不足 Permission denied
# 模拟故障:移除用户所有读写执行权限
chmod u=– /home/zhangsan
# 修复1:递归修改目录与内部文件属主
chown -R zhangsan:zhangsan /home/zhangsan
# 修复2:给目录所有者赋予完整读写执行权限
chmod u=rwx /home/zhangsan
# 校验目录权限
ll -d /home/zhangsan
三、本地用户组全套管理命令
1 groupadd 创建用户组
# 创建普通组admin,系统自动分配未占用GID
groupadd admin
# -g 指定自定义GID=2000,创建sysadmin组
groupadd sysadmin -g 2000
# 过滤查看/etc/group内admin相关组信息
grep admin /etc/group
2 groupmod 修改组属性
# –new-name 修改组名,将admin重命名为admins
groupmod –new-name admins admin
# -g 修改组ID为2002
groupmod -g 2002 admins
# 校验修改后的组信息
grep 'admins' /etc/group
3 groupdel 删除用户组
# 删除sysadmin组;注意:该组不能是任何用户的主组,否则删除失败
groupdel sysadmin
# 验证是否删除成功,无输出代表已删除
grep sysadmin /etc/group
4 groupmems 专门管理组附属成员
# 查看groupmems全部参数说明
groupmems –help
# -g 指定目标组admins,-a 添加XXX到该组附属成员
groupmems -g admins -a XXX
# -l 列出目标组内所有附属用户
groupmems -g admins -l
# -d 从组中删除指定用户XXX
groupmems -g admins -d XXX
# -p 一键清空组内所有附属成员
groupmems -g admins -p
四、用户密码管理 /etc/shadow 与 chage
4.1 /etc/shadow 九段字段详解
# 过滤XXX用户的shadow完整条目
grep XXX /etc/shadow
# 示例输出:XXX:$6$m0OgWyIu$P2TF1pB8MO…J3LopEUdhmp/Ir/:19300:0:99999:7:::
# 字段拆分:
# 1 用户名
# 2 加密密码串 $6代表sha512加密算法
# 3 上次改密码距离1970-01-1总天数;0=登录强制改密码
# 4 最小修改间隔天数,0代表随时可改密码
# 5 密码最大有效天数
# 6 过期前提前告警天数
# 7 密码过期宽限天数
# 8 账号整体过期天数
# 9 预留空字段
4.2 chage 管控密码生命周期
# -l 列出用户完整密码时效配置
chage -l XXX
# -M 设置密码最大有效期100天
chage -M 100 XXX
# -m 设置两次改密码最少间隔10天
chage -m 10 XXX
# -d 0 下次登录强制修改密码
chage -d 0 XXX
# -E 指定账号整体过期日期,格式 YYYY-MM-DD
chage -E 2026-12-31 XXX
4.3 用户锁定、禁用、密码操作
# ========== 锁定用户密码 ==========
# -L 锁定shadow密码字段,无法登录
usermod -L laowang
# -U 解锁密码
usermod -U laowang
# ========== 修改登录shell禁止登录 ==========
# /sbin/nologin 无登录权限,多用于服务账号
usermod -s /sbin/nologin laowang
# 恢复登录bash
usermod -s /bin/bash laowang
# ========== 清空用户密码,免密登录 ==========
passwd -d laowang
# ========== 复制他人加密密码给当前用户 ==========
# 提取laowang的加密密码字符串
grep laowang /etc/shadow
# -p 直接填入加密串,同步密码
usermod -p '$6$dQcDSqtz$Nboi6QLMzscWSLvnnRO86gm3XI/qbgfnK5zVv2Ix13EktQ97vwNsqQlrfI2K/b1mVnHNgzmMNIb0P4HnTugog/' XXX
# -p 后为空字符串,清空密码
usermod -p '' XXX
4.4 高危:UID=0 特权账号
UID=0 拥有系统全部最高权限,生产严禁使用
# 方式1:手动修改/etc/passwd中UID为0
vim /etc/passwd
XXX:x:0:1000:XXX:/home/XXX:/bin/bash
# 方式2:useradd -o 允许重复UID创建账号
# -o 取消UID唯一性校验
useradd -o -u 0 XXX
# 验证UID为0,等同于root权限
id XXX
4.5 系统可用 Shell 查看安装
# 查看系统所有合法登录shell列表
cat /etc/shells
# 查看sh软链接指向bash
ll /bin/sh /usr/bin/sh
# 安装tcsh、tmux扩展shell工具
yum install -y tcsh tmux
# 查看csh软链接
ll /bin/csh /usr/bin/csh
五、su 用户切换命令详解
两种切换模式区别
# ========== 模式1:su 用户名 非登录shell ==========
# 仅切换身份,保留当前用户所有环境变量
su
# 输入root密码切换
# ========== 模式2:su – / su -l 完整登录shell(推荐) ==========
# 完整加载目标用户家目录、环境变量,环境纯净
su -l
# 简写等价写法
su –
# ========== 单次以指定用户执行命令 ==========
# -c 后面命令整体用单引号包裹,防止变量提前解析
su -l laowang -c 'cat /etc/hosts'
# ========== nologin账号强制指定bash登录 ==========
# 账号默认shell为nologin,-s临时指定bash
su -l adm -s /bin/bash
# nologin账号提示符异常修复
# 复制skel模板到adm家目录
cp /etc/skel/{.bash_profile,.bashrc} /var/adm
# 重新登录
su adm -l -s /bin/bash
六、sudo 安全提权完整配置
su 缺陷
需要 root 密码、无操作审计日志、无法精细化分配权限
sudo 优势
输入自身密码、操作记录存入 /var/log/secure、可限制可执行命令
# 普通用户临时以root执行id命令
sudo id
# ========== 配置sudo权限 visudo ==========
# 指定默认编辑器为vim
export EDITOR=vim
# 专用编辑工具,自动校验语法,禁止vim直接改/etc/sudoers
visudo
# visudo内置默认规则说明
# root 拥有全部管理员权限
root ALL=(ALL) ALL
# %代表组,wheel组所有用户拥有全部权限
%wheel ALL=(ALL)
# 案例1:laowang拥有全部sudo权限
laowang ALL=(ALL) ALL
# 案例2:laowang免密执行所有管理员命令
laowang ALL=(ALL) NOPASSWD:ALL
# 案例3:最小权限,仅允许用户管理命令
laowang ALL=(ALL) /sbin/useradd,/sbin/usermod,/sbin/userdel
# ========== 分片配置文件(推荐,不修改主文件) ==========
# 单独创建laowang权限配置文件
echo 'laowang ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/laowang
# 查看分片配置内容
cat /etc/sudoers.d/laowang
# ========== 高危提权漏洞演示 ==========
# 创建测试用户
useradd xiaoniuma
# 设置密码
echo 123 | passwd –stdin xiaoniuma
# 仅授予sudo vim权限
echo 'xiaoniuma ALL=(ALL) /bin/vim' > /etc/sudoers.d/xiaoniuma
# 用户执行sudo vim /etc/passwd 可修改任意账号UID=0,获取最高权限
# 还原环境
userdel -r xiaoniuma
rm -f /etc/sudoers.d/xiaoniuma
sudo 使用规范总结
日常运维优先sudo,避免长期su -停留在 root 权限
遵循最小权限原则,不随便授予 ALL 全部权限
新增权限写入/etc/sudoers.d/分片文件,不修改主文件
定期查看/var/log/secure审计管理员操作日志
七、Linux 文件基础权限入门
# 查看文件完整权限、属主、属组
ls -l myfile
# 输出示例:-rw-r—–. 1 XXX wheel 2262 Dec 23 08:47
# 分段拆解
# 第1字符:文件类型 -普通文件 d目录 l软链接
# 2-4位 u(所有者)权限 r读 w写 x执行
# 5-7位 g(同组用户)权限
# 8-10位 o(其他所有人)权限
# 权限字母含义
# r = read 可读
# w = write 写入、删除
# x = execute 可执行文件 / 进入目录
# 示例 -rw-r–r– 解读
# 文件所有者:可读可写,无执行权限
# 同组用户:仅可读
# 其他用户:仅可读
八、全文核心总结
用户标准化操作:useradd/usermod/userdel,禁止手动修改 passwd
组管理命令:groupadd/groupmod/groupdel/groupmems
加密密码、账号时效存储在/etc/shadow,chage控制密码过期规则
家目录故障通用修复方案:复制/etc/skel模板 + 修正文件归属
切换用户优先 su – 完整登录模式,环境变量完整规范
生产环境统一使用sudo精细化提权,禁止共享 root 密码
UID=0、sudo 授予 vim 属于高危安全漏洞,线上环境禁止配置
文件权限分为所有者、同组、其他三类,r/w/x 分别控制读写执行
(注:部分内容可能由 AI 生成)




