前言

Linux 是典型的多用户操作系统,支持多人同时登录、独立使用系统。为了区分不同使用者、管控文件与操作权限,系统引入了用户和用户组两大概念。

本篇带你搞懂用户 ID、核心配置文件、用户 / 组增删改查全套命令,学会账号创建、密码修改、身份切换、分组管理,彻底入门 Linux 权限体系。


一、Linux 用户基础介绍

  1. 登录 Linux 系统,必须使用合法用户名 + 密码,匿名无法登录。
  2. 系统不会直接识别用户名,每个用户都对应唯一 UID(用户 ID),类比:用户名 = 域名,UID=IP 地址。
  3. 用户按 UID 范围分为三类:
    • 超级用户:UID = 0,默认是 root,拥有系统最高所有权限
    • 系统用户:UID 范围 1 ~ 499,系统后台服务专用,一般不允许登录
    • 普通用户:UID 范围 500 ~ 极大值,日常使用者账号,权限受管控
  4. 查看当前用户信息(用户名 + UID/GID)
id

二、用户核心配置文件

系统所有用户信息、密码信息,都存放在两个关键文件中。

1. /etc/passwd 用户账号信息文件

所有用户均可读取,每行对应一个用户,字段格式:用户名 : 密码占位符(x) : UID : GID : 注释信息 : 家目录 : 登录Shell

  • 密码位统一显示 x,真实密码不在此文件保存
  • 家目录:用户登录后默认所在目录
  • Shell:用户登录后使用的命令解释器

2. /etc/shadow 用户密码文件

仅 root 可查看,存放加密密码与账号安全策略,共 9 个字段:

  1. 用户名
  2. MD5 加密后的用户密码
  3. 最后一次修改密码的时间(从 1970-01-01 算起的天数)
  4. 密码最短使用天数(多久后才能再次改密码)
  5. 密码最长使用天数(多久必须改密码)
  6. 密码过期前提醒天数
  7. 密码过期后宽限天数(超时禁用账号)
  8. 账号失效时间(绝对时间)
  9. 保留字段

三、Linux 用户组介绍

引入用户组的核心目的:批量管控权限。

  1. 组拥有独立 GID(组 ID),编号规则同 UID。
  2. 每个用户必有一个主组(主要组),同时可以加入多个附加组(次要组)。
  3. 用户主组 GID 定义在 /etc/passwd 第四个字段。
  4. 把用户名写入 /etc/group 对应组的成员列表,该组即为用户的次要组。

四、组核心配置文件

1. /etc/group 组账号信息文件

存放所有用户组基本信息,格式:组名 : 组密码占位符(x) : GID : 组内成员列表

2. /etc/gshadow 组密码文件

存放组管理员、组密码、成员信息,日常极少使用。


五、用户操作相关命令

1. useradd 创建新用户

常用参数:

  • -d:指定用户家目录
  • -u:手动指定 UID(建议搭配 -g 使用)
  • -g:指定主组
  • -G:指定次要组,多组用逗号分隔
  • -s:指定登录 Shell
  • -p:设置密码(要求传入 MD5 加密后的密文)

示例:

# 创建普通用户 test
useradd test

2. passwd 修改用户密码

普通用户仅能修改自身密码,root 可修改任意用户密码。

passwd       # 修改当前用户密码
passwd test  # root 修改 test 用户密码

3. su - 切换登录用户

su - 用户名 完整切换身份(同时切换环境变量、家目录)

su - root    # 切换到 root 用户
su - test    # 切换到 test 用户
exit         # 退出当前用户,返回上一级

4. userdel 删除用户

  • 直接删除用户:仅删账号,保留家目录
  • -r:删除用户 同时删除对应的家目录
userdel test
userdel -r test

5. usermod 修改用户信息

用于修改已有用户的各项属性,常用参数:

  • -d:修改用户家目录
  • -g:修改用户主组
  • -G:修改 / 追加次要组
  • -s:修改登录 Shell
  • -L:锁定账号,禁止登录
  • -U:解锁账号,恢复登录
  • -l:修改用户名
  • -u:修改用户 UID

示例:

usermod -l newname oldname  # 重命名用户
usermod -L test             # 锁定 test 用户
usermod -U test             # 解锁 test 用户

六、用户组操作相关命令

1. groupadd 创建用户组

  • -g:手动指定组 GID
groupadd group1
groupadd -g 1000 group2

2. groupmod 修改组信息

  • -g:修改组 GID
  • -n:修改组名称
groupmod -n newgroup oldgroup

3. groupdel 删除用户组

注意:不能删除某个用户的主组

groupdel group1

4. gpasswd 管理组成员

实现用户加入 / 移出附加组

  • -a 用户名 组名:将用户添加到指定组
  • -d 用户名 组名:将用户从指定组移除
gpasswd -a test group1
gpasswd -d test group1

5. groups 查看用户所属组

groups        # 查看当前用户所有组
groups test   # 查看 test 用户所有组

七、查看系统在线 / 历史登录用户

1. whoami

查看当前正在操作的用户名

whoami

2. finger

查看指定用户详细信息

finger test

3. users

简单列出当前所有已登录的用户名

users

4. who

查看本机登录用户、登录终端、登录来源

who

5. w

功能比 who 更强,显示登录用户 + 正在运行的程序、系统负载

w

6. write

向当前在线的其他用户发送即时消息

write 用户名

7. last

查看系统历史登录记录

  • -5:只显示最近 5 条登录记录
last
last -5

本篇小结

  1. Linux 依靠 UID/GID 识别用户与组,分为超级用户、系统用户、普通用户三类。
  2. /etc/passwd、/etc/shadow、/etc/group 是三大核心配置文件,掌握字段含义是理解权限的基础。
  3. 熟练使用 useradd/userdel/usermod、groupadd/groupdel/gpasswd 完成账号与分组管理。
  4. 学会切换用户、改密码、锁定账号、查看在线 / 历史登录用户,满足日常运维基础需求。

下期预告

下一篇我们讲解 文件所有者与权限,结合本章用户、组知识,读懂 ls -l 权限字段,学会 chmod、chown 命令,彻底打通 Linux 权限体系。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐