用户与基础权限
RHEL 9 用户与组:useradd/usermod、/etc/passwd 七列、passwd/shadow、chmod 数字权限、chown 与 umask。
本页目录
权限是 RHCSA 的主干:创建用户、设密码、改属主属组、用数字权限卡住敏感文件。ACL、特殊位、sudo 在后续专篇展开;本篇先把 用户/组 + rwx 基础权限 打牢。
系列:从 RHCSA 到 RHCE · 第 6 / 17 篇 上一篇:dnf 软件源与 tar 下一篇:ACL 与特殊权限 总目录:系列索引
环境说明
- 系统:RHEL 9
- 身份:root(建用户、改系统文件)
- 前置:基础命令、会用 VIM
root 与普通用户
| root | 普通用户 | |
|---|---|---|
| UID | 0 | 通常 ≥ 1000 |
| 权限 | 几乎不受文件权限限制 | 受 owner/group/other 约束 |
| 家目录 | /root | /home/用户名 |
| 提示符 | # | $ |
生产里日常操作用普通用户;需要管理再 sudo(专篇)。考试题面若写 root,就用 root。
用户与组模型
- 一个用户必须有一个基本组(primary)
- 可以有 0 个或多个附加组(supplementary)
- 对组授权,组内成员都获得相应权限
用户 tom ──基本组──► tom(默认同名组)
──附加组──► wheel, devs
关键账号文件
/etc/passwd(用户基本信息,所有人可读)
cat /etc/passwd
示例行:
tom:x:1041:1041::/home/tom:/bin/bash
七列(以 : 分隔):
| 列 | 含义 | 本例 |
|---|---|---|
| 1 | 用户名 | tom |
| 2 | 密码占位 | x(真实密码不在这里) |
| 3 | UID | 1041 |
| 4 | 基本组 GID | 1041 |
| 5 | 备注/描述 | 空 |
| 6 | 家目录 | /home/tom |
| 7 | 登录 Shell | /bin/bash |
考点:七列顺序与含义是高频点;
x不是密码本身。
/etc/group(组信息)
cat /etc/group
| 列 | 含义 |
|---|---|
| 1 | 组名 |
| 2 | 组密码占位 |
| 3 | GID |
| 4 | 组成员列表(多为附加成员;基本组成员常不在这里重复列出) |
/etc/shadow(密码与策略,通常仅 root 可读)
cat /etc/shadow
| 列 | 含义 |
|---|---|
| 1 | 用户名 |
| 2 | 加密密码;!! 或 * 表示无有效密码/锁定 |
| 3 | 上次改密时间(相对 1970-01-01 的天数) |
| 4 | 最短有效期(天) |
| 5 | 最长有效期(天) |
| 6 | 过期前警告天数 |
| 7 | 密码过期后账号仍可用的宽限天数(inactive) |
| 8 | 账号过期日(相对 1970-01-01 的天数;空表示不过期) |
| 9+ | 保留字段 |
RHEL 9 常见哈希前缀 $6$(SHA-512)。
/etc/login.defs(新建用户默认策略)
grep -E '^PASS_' /etc/login.defs
常见项:PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_WARN_AGE。改这里影响之后新建的用户默认值。
创建用户:useradd
useradd tom
id tom
不带选项时,通常会:
- 建用户
tom - 建同名组
tom作为基本组 - 建家目录
/home/tom(视发行版与配置) - 把信息写入
/etc/passwd、/etc/shadow、/etc/group
常用选项
| 选项 | 含义 |
|---|---|
| -u UID | 指定 UID |
| -g 组名 | 指定基本组(组须已存在) |
| -G 组1,组2 | 指定附加组 |
| -s /bin/bash | 指定 Shell |
| -s /sbin/nologin | 禁止登录 shell |
| -d /path | 指定家目录(少用) |
| -M | 不建家目录 |
| -c "备注" | 写 passwd 第 5 列 |
useradd -u 2025 user1
useradd -u 2026 -g root user2
useradd -u 2027 -g root -G adm,sys user3
useradd -s /sbin/nologin user4
易错:
-g指定不存在的组会失败;先groupadd。 易错:-G会整体替换附加组列表;追加要用usermod -aG(见下)。
查询:id
id user3
uid=2027(user3) gid=0(root) groups=0(root),3(sys),4(adm)
uid用户gid基本组groups基本组 + 附加组
考试验证「是否进对了组」,一律 id 用户名。
设置密码:passwd
passwd tom
# 输入两遍新密码(不回显)
管道一次设置(脚本/考试常用):
echo 'YourPass123' | passwd --stdin tom
查看密码状态:
passwd -S tom
锁定 / 解锁:
passwd -l tom
passwd -u tom
(usermod -L/-U 也可,见下。)
修改用户:usermod
| 选项 | 含义 |
|---|---|
| -u UID | 改 UID |
| -g 组 | 改基本组 |
| -G 组1,组2 | 设置附加组列表 |
| -aG 组 | 追加附加组(常与 -G 连写 -aG) |
| -s Shell | 改 Shell |
| -d 家目录 | 改家目录路径(是否搬迁另论) |
| -l 新名 | 改用户名 |
| -L | 锁定 |
| -U | 解锁 |
useradd dachui
usermod -u 3000 dachui
usermod -g root dachui
usermod -aG sys,adm dachui
echo 'YourPass123' | passwd --stdin dachui
passwd -S dachui
usermod -L dachui
usermod -U dachui
id dachui
考点:把用户加入某附加组用
usermod -aG 组名 用户;漏了-a可能冲掉原有附加组。
删除用户:userdel
userdel user1 # 只删账号
userdel -r user2 # 连家目录一起删
ls /home
| 写法 | 家目录与邮件等 |
|---|---|
| userdel 用户 | 保留 |
| userdel -r 用户 | 删除 |
易错:考试要求「删除用户及其家目录」时必须
-r。
组管理:groupadd / groupdel
groupadd admins
groupdel admins
cat /etc/group
改组名:groupmod -n 新组 旧组(较少考)。
文件权限:rwx 与数字
ls -l /etc/hosts
-rw-r--r--. 1 root root 158 ...
权限 9 位,三位一组:
rw- r-- r--
u g o
属主 属组 其他人
| 字母 | 数字 | 含义(文件) | 含义(目录) |
|---|---|---|---|
| r | 4 | 读内容 | 列出目录项 |
| w | 2 | 改内容 | 在目录内增删改名(还需 x) |
| x | 1 | 当程序执行 | 可 cd 进入 |
常见组合:
| 字母 | 数字 |
|---|---|
| rwx | 7 |
| rw- | 6 |
| r-x | 5 |
| r-- | 4 |
| --- | 0 |
| 三位权限 | 数字 |
|---|---|
| rwxrwxrwx | 777 |
| rwxr-xr-x | 755 |
| rw-r--r-- | 644 |
| rwx------ | 700 |
第 1 个字符是类型:- 文件、d 目录、l 链接。末尾的 . 常与 SELinux 上下文有关。
改权限:chmod
字母式
chmod u+x test.txt # 属主加 x
chmod u-x test.txt
chmod u=r-- test.txt # 属主设为只读
chmod g+w test.txt
chmod o+w test.txt
chmod a+x test.txt # 所有人都加 x
u/g/o/a 对应属主/属组/其他人/全部;+ - = 加、减、设为。
数字式
chmod 777 test.txt
chmod 700 test.txt
chmod 644 test.txt
ls -l test.txt
考点:数字三位从左到右是 u、g、o。
755= 属主 rwx,组和其他 r-x。
改属主属组:chown
chown user3 test.txt # 只改属主
chown :adm test.txt # 只改属组
chown root:bin test.txt # 同时改
chown -R user:group 目录 # 递归
ls -l test.txt
| 写法 | 效果 |
|---|---|
| chown user file | 属主=user |
| chown :group file | 属组=group |
| chown user:group file | 两者都改 |
只改组也可用 chgrp 组 文件。
易错:属主改成别人后,自己可能失去写权限;实验里改完立刻
ls -l确认。
umask:新建文件的默认权限
umask
# 常见 0022
touch newfile
ls -l newfile
mkdir newdir
ls -ld newdir
含义:新建时先按类型取「起点权限」再减掉 umask 对应的位——普通文件起点多为 666,目录为 777。RHEL 常见结果:
- 普通文件默认
644(rw-r--r--) - 目录默认
755(rwxr-xr-x)
umask 0022 → 组和其他去掉 w。
查看/持久化相关配置常在:
grep umask /etc/bashrc ~/.bashrc
考点:umask 不是权限本身,是掩码;
umask 077时新建文件往往仅属主可读写。
推荐实验(约 25 分钟)
# 用户与组
groupadd labgrp
useradd -u 3100 -G labgrp alice
echo 'YourPass123' | passwd --stdin alice
id alice
passwd -S alice
# 密码文件(只读观察)
grep alice /etc/passwd
grep alice /etc/shadow | cut -d: -f1-2
# 权限
mkdir -p /tmp/permlab
cd /tmp/permlab
touch secret.txt
echo top > secret.txt
ls -l
chmod 600 secret.txt
ls -l
chmod u+x,g+r secret.txt
ls -l
chmod 644 secret.txt
chown alice:labgrp secret.txt
ls -l
# umask 观察
umask
touch default.txt
mkdir defaultdir
ls -l default.txt
ls -ld defaultdir
# 追加附加组
usermod -aG adm alice
id alice
期望
id alice含labgrp;usermod -aG adm后还含admsecret.txt曾变为600,后又回到644并属主alice- 新建文件默认多为
-rw-r--r--,目录drwxr-xr-x(umask 0022 时)
速查表
| 目标 | 命令 |
|---|---|
| 建用户 | useradd [-u -g -G -s] 用户 |
| 设密码 | passwd 用户 / echo pass | passwd --stdin 用户 |
| 查用户 | id 用户 |
| 追加附加组 | usermod -aG 组 用户 |
| 锁定/解锁 | usermod -L/-U 或 passwd -l/-u |
| 删用户+家目录 | userdel -r 用户 |
| 建/删组 | groupadd / groupdel |
| 改权限 | chmod 644 文件 / chmod u+x 文件 |
| 改属主属组 | chown user:group 文件 |
| 默认掩码 | umask |
考点与易错
考点:
/etc/passwd七列;-gvs-G;chmod数字与 ugo;chown user:group。 易错:用usermod -G时漏-a,附加组被覆盖。 易错:userdel不加-r,家目录残留,题面要求删除文件时判错。 易错:把密码写进/etc/passwd——真实密码在/etc/shadow。 易错:目录只有r没有x,无法cd进入。 练习环境:课堂若已有预置用户,命令与本文一致,仅用户名不同。
小结
- 用户信息在
/etc/passwd(七列),密码在/etc/shadow。 - 建用户
useradd,查id,追加组用usermod -aG。 - 权限三位数字对应 u/g/o:
644文件、755目录最常见。 chown改属主属组;umask决定新建默认权限。
下一篇:ACL 精准授权与 suid/sgid/sticky——在「组不够用」和「共享目录」场景里补刀。
系列导航:总目录 · 上一篇:dnf 软件源与 tar · 下一篇:ACL 与特殊权限