Linux

用户与基础权限

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普通用户
UID0通常 ≥ 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(真实密码不在这里)
3UID1041
4基本组 GID1041
5备注/描述空
6家目录/home/tom
7登录 Shell/bin/bash

考点:七列顺序与含义是高频点;x 不是密码本身。

/etc/group(组信息)

cat /etc/group
列含义
1组名
2组密码占位
3GID
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
属主  属组  其他人
字母数字含义(文件)含义(目录)
r4读内容列出目录项
w2改内容在目录内增删改名(还需 x)
x1当程序执行可 cd 进入

常见组合:

字母数字
rwx7
rw-6
r-x5
r--4
---0
三位权限数字
rwxrwxrwx777
rwxr-xr-x755
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 后还含 adm
  • secret.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 七列;-g vs -G;chmod 数字与 ugo;chown user:group。 易错:用 usermod -G 时漏 -a,附加组被覆盖。 易错:userdel 不加 -r,家目录残留,题面要求删除文件时判错。 易错:把密码写进 /etc/passwd——真实密码在 /etc/shadow。 易错:目录只有 r 没有 x,无法 cd 进入。 练习环境:课堂若已有预置用户,命令与本文一致,仅用户名不同。

小结

  1. 用户信息在 /etc/passwd(七列),密码在 /etc/shadow。
  2. 建用户 useradd,查 id,追加组用 usermod -aG。
  3. 权限三位数字对应 u/g/o:644 文件、755 目录最常见。
  4. chown 改属主属组;umask 决定新建默认权限。

下一篇:ACL 精准授权与 suid/sgid/sticky——在「组不够用」和「共享目录」场景里补刀。


系列导航:总目录 · 上一篇:dnf 软件源与 tar · 下一篇:ACL 与特殊权限

相关阅读

全部文章 →
← 返回列表更多「Linux」