当前位置: 首页 > news >正文

学习Linux——用户管理

《用户管理(User Management)》2025年10月27日

Linux操作系统是多用户多任务操作系统,用户管理负责创建、维护和删除用户账号,所有用户信息都存储在/etc/passwd,密码哈希存储在/etc/shadow,组信息存储在/etc/group

用户管理围绕用户账号的生命周期展开,核心命令包括useradd:添加用户、usermod:修改用户、userdel:删除用户等

一、核心理论

用户ID(UID):系统识别用户的唯一数字标识。

0为root用户,1-999为系统用户 ,1000及以上为普通用户。

用户类型:

超级用户(root):拥有系统的全部权限,UID=0

系统用户:用于运行服务(如nginx、mysql) ,通常是不允许登录。

普通用户:由root创建,权限受限制

二、关键配置文件

当我们创建一个用户时,这个用户会在以下几个地方写入值:

1、/home 目录下会创建一个与用户名相同的目录,在目录下有一些隐藏文件,这些文件来自于 /etc/skel 目录下的文件。

2、在 /var/spool/mail 目录下会创建一个与用户名同名的目录

3、会在 /etc/passwd 文件中添加一行记录

4、会在 /etc/shadow 文件中添加一行记录

5、会在 /etc/group 文件中添加一行记录

6、会在 /etc/gshadow 文件中添加一行记录

接下来我们着重讲几个关键的配置文件:

1、/etc/passwd(用户信息)

存储用户账号基本信息(格式:用户名:密码占位符:UID:GID:注释:家目录:登录shell(用户可执行的脚本))

[root@bogon ~]# tail -1 /etc/passwd (查看/etc/passwd文件末尾行)
user1:x:1001:1003::/home/user1:/bin/bash
解读:
用户名为user1:密码占位符是"x":用户的UID是1001:用户的GID是1003:个人信息为空 :家目录为"/home/user1" :登录shell(用户可执行的脚本)为"/bin/bash"

2、/etc/shadow(密码信息)

存储用户密码哈希及密码策略(格式:用户名:哈希值(用户的密码字符串):最后修改时间:最小有效期(密码修改间隔):最大有效期(密码的有效期):警告期(密码过期前的警告天数):过期宽限期:失效时间:保留

[root@bogon ~]# tail -1 /etc/shadow(查看/etc/shadow文件末尾行)
user1::20388:0:99999:7:::
#此时为未设密码状态
[root@bogon ~]# passwd user1
Changing password for user user1.
New password: #a123
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #a123
passwd: all authentication tokens updated successfully.
#利用passwd 命令设置密码为a123
[root@bogon ~]# tail -1 /etc/shadow
user1:$6$rounds=100000$Nr0TsPcz/3G0fT.Q$f3CEwUm2RVDOzEQ80Y9O7/Y4vAla96GbApWgnh9L7.4h/9dY7c24hFvMhbERshJiNgmTSs5lv4EBFKei7528I0:20388:0:99999:7:::
解读:
用户名称为user1:
该用户的密码字符串哈希值为“6$rounds=100·····IO”:
用户最后一次修改密码的时间为20388(表示从1970年1月1日起的第20388天):
密码的最小时间(密码修改间隔)为0表示可以随时修改密码:
密码的最大时间为99999,密码有效期天数约等于永久:
密码的宽限期(密码过期前七天进行警告,按照文件内容应该是99992天后警告):
密码的警告时间(过期后宽限天数为0,过期后立即锁定):
密码的过期时间为0表示该账号永久有效:保留(暂时没用,属于一个标记位)

拓展内容:密码加密(哈希值)

在 Linux 系统中,/etc/shadow 文件里的哈希值是用户密码的 “加密存储形式”,它不是明文密码字符串,而是通过密码哈希算法(单向哈希+盐值+迭代计算)处理后,用来报站密码的存储安全。

哈希的本质:密码的 “安全替身”

密码哈希是将用户设置的明文密码通过单向哈希算法(如 SHA-512、MD5 早期也用过,但现在已不安全)进行加密计算,得到一串不可逆的字符序列。

  • 不可逆性:无法从哈希值反向推导出原始明文密码(这是哈希算法的核心特性,保障密码安全)。
  • 验证逻辑:当用户登录时,系统会将用户输入的明文密码再次通过相同算法计算哈希,然后与/etc/shadow中存储的哈希值比对 —— 若一致,则密码验证通过。

/etc/shadow 中哈希的格式解析

以上述提供的哈希部分$6$rounds=100000$Nr0TsPcz/3G0fT.Q$f3CEwUm2RVDOZEQ80Y9O7/Y4vAla96GbApwgn h9L7.4h/9dY7c24hFvMhbERshJiNgmTSs5lv4EBFKei7528I0为例,其结构可拆解为:

字段含义
$6$表示使用 SHA-512 哈希算法($1$是 MD5,$5$是 SHA-256,$6$是 SHA-512)
rounds=100000哈希计算的 “迭代次数”(次数越多,破解难度越大,这里是 10 万次)
Nr0TsPcz/3G0fT.Q盐值(Salt):随机生成的字符串,与密码混合后哈希,防止 “彩虹表” 攻击
后面的长字符串最终的密码哈希结果(由 “盐值 + 明文密码” 经过 SHA-512 算法迭代计算得到)

3、/etc/group(组信息)

存储组账号基本信息(格式:组名:密码占位符:GID: 附加用户列表(组内成员)

[root@bogon ~]# tail -1 /etc/group
user1:x:1003:
解读:
组名为user1:密码占位符为x:GID值为1003:组内成员为空

三、常用操作命令

1、创建用户:useradd

  • 语法useradd [选项] 用户名

  • 核心用法:在系统中新增一个用户账号,并创建默认的家目录和组。

    #在这里为大家演示最常用创建系统用户和普通用户的命令:
    #创建一个自动创建家目录的系统用户并指定用户的默认shell为/bin/bash
    [root@bogon ~]# useradd -m -r -s /bin/bash zhangsan
    [root@bogon ~]# id zhangsan
    uid=995(zhangsan) gid=995(zhangsan) groups=995(zhangsan)#创建一个自动创建家目录的普通用户并指定登录shell为/bin/bash
    [root@bogon ~]# useradd -m -s /bin/bash lisi
    [root@bogon ~]# id lisi
    uid=1002(lisi) gid=1004(lisi) groups=1004(lisi)注意观察:系统用户的ID值小于1000;普通用户的ID值大于1000
  • 常见选项:

    • -d 目录:指定用户的家目录(默认:/home/用户名)。
    • -m:强制创建家目录(若默认配置未开启则需手动指定)。
    • -r:创建系统用户。
    • -s Shell路径:指定用户的登录 Shell(如/bin/bash允许登录,/sbin/nologin禁止登录)。
    • -u UID:手动指定用户的 UID(需确保唯一性)。
    • -g 组名/组ID:指定用户的初始组(必须是已存在的组)。
    • -G 组1,组2:指定用户的附加组(多个组用逗号分隔)。
    • -c "注释":添加用户注释(如用户姓名、部门)。

2、查看用户

查看当前登录的用户

who 命令:显示当前登录系统的所有用户信息(用户名、终端、登录时间、IP 等)示例:

who
# 输出示例:
[root@bogon ~]# who
root     tty1         2025-10-18 09:34
root     pts/1        2025-10-27 16:01 (192.168.***.***)

w 命令:在 who 的基础上,额外显示用户当前的操作(更详细)示例:

w
# 输出示例:
[root@bogon ~]# w21:33:06 up 2 days, 17:58,  2 users,  load average: 0.98, 0.46, 0.18
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      18Oct25  3days  0.31s  0.31s -bash
root     pts/1     16:01    1.00s  0.12s  0.01s w
查看系统中所有用户(包括未登录的)

Linux 的用户信息存储在 /etc/passwd 文件中,可直接查看该文件或通过命令解析:

直接查看 /etc/passwd:该文件每行代表一个用户,解读方法参考上面

cat /etc/passwd
# 输出示例(截取部分):
root:x:0:0:root:/root:/bin/bash #root用户
bin:x:1:1:bin:/bin:/sbin/nologin  # 系统用户(无登录权限)
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash  # 普通用户

cut 命令提取用户名:只显示所有用户的用户名(过滤 /etc/passwd 的第一列)

cut -d: -f1 /etc/passwd

id 命令查看指定用户详情:显示用户的 UID、GID 及所属组示例:

[root@bogon ~]# id lisi
uid=1002(lisi) gid=1004(lisi) groups=1004(lisi)
查看用户的登录历史

last 命令:显示用户的登录记录(包括登录时间、IP、退出时间等)

[root@bogon ~]# last lisi
# 查看指定用户(lisi)的登录历史wtmp begins Fri Oct 17 20:39:52 2025
[root@bogon ~]# last -n 5
# 只显示最近5条记录
root     pts/1        192.168.**.**    Mon Oct 27 16:01   still logged in
root     pts/0        192.168.**.**     Sun Oct 26 17:00 - 18:15 (1+01:15)
root     pts/1        192.168.**.**     Fri Oct 24 11:05 - 21:54  (10:49)
root     pts/0        192.168.**.**     Thu Oct 23 12:41 - 13:02 (1+00:21)
root     pts/2        192.168.**.**     Thu Oct 23 08:16 - 13:30  (05:14)wtmp begins Fri Oct 17 20:39:52 2025[root@bogon ~]# last -i
#查看IP
root     pts/1        192.168.**.**    Mon Oct 27 16:01   still logged in
root     pts/0        192.168.**.**    Sun Oct 26 17:00 - 18:15 (1+01:15)
..........
root     tty1         0.0.0.0          Fri Oct 17 20:40 - crash  (12:51)
reboot   system boot  0.0.0.0          Fri Oct 17 20:39   still runningwtmp begins Fri Oct 17 20:39:52 2025

3、修改用户:usermod

  • 语法usermod [选项] 用户名

  • 核心用法:修改已存在用户的账号信息(如 UID、家目录、Shell 等)。

    #展示常用命令
    #将zhangsan用户改名为wangwu并修改其UID
    usermod -l wangwu -u 10086 zhangsan
    [root@bogon ~]# usermod -l wangwu -u 10086 zhangsan
    [root@bogon ~]# id zhangsan
    id: ‘zhangsan’: no such user
    [root@bogon ~]# id wangwu
    uid=10086(wangwu) gid=995(zhangsan) groups=995(zhangsan)
  • 常见选项:

    • -d 目录:修改用户的家目录(需配合-m才能移动原有家目录文件)。
    • -l 新名称:修改用户的名称
    • -m:移动用户家目录的内容到新目录(需与-d同时使用)。
    • -s Shell路径:修改用户的登录 Shell。
    • -u UID:修改用户的 UID(需确保新 UID 未被占用)。
    • -g 组名/组ID:修改用户的初始组。
    • -G 组1,组2:修改用户的附加组(覆盖原有附加组,若需新增需加-a)。
    • -a:与-G配合,在原有附加组基础上新增组(而非覆盖)。
    • -L:锁定用户账号(禁止登录,在/etc/shadow密码前加!)。
    • -U:解锁用户账号(移除/etc/shadow密码前的!)。

4、删除用户:userdel

  • 语法userdel [选项] 用户名

  • 核心用法:从系统中删除用户账号。

    [root@bogon ~]# userdel wangwu
    [root@bogon ~]# id wangwu
    id: ‘wangwu’: no such user
    
  • 常见选项:

    • -r:删除用户的同时,删除其家目录和邮件目录(若不加此选项,家目录会保留)。
    • -f:强制删除用户(即使用户当前处于登录状态)。

5、设置用户密码:passwd

  • 语法passwd [选项] 用户名

  • 核心用法:修改用户的密码(普通用户只能修改自己的密码,root 可修改所有用户密码)。

    #常用命令演示:
    [root@bogon ~]# tail -1 /etc/shadow
    #首先查看user1为设置密码状态
    user1:!!:20388:0:99999:7:::
    [root@bogon ~]# passwd user1
    #给user1设置密码
    Changing password for user user1.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    #设置成功
    [root@bogon ~]# tail -1 /etc/shadow
    user1:$6$rounds=100000$JzTIeH9bxZtwDtk/$lM3wWC/leROxtUvzgm8WBn.HdYbjY5UvOYgUO1cknikP1gCSI.LwW.:20388:0:99999:7::
    #再次查看发现配置文件有所变化,解读参考上面
    [root@bogon ~]# passwd -d user1
    #清除密码
    Removing password for user user1.
    passwd: Success
    #清除密码成功,重新查看配置文件
    [root@bogon ~]# tail -1 /etc/shadow
    user1::20388:0:99999:7:::
  • 常见选项:

    • -l:锁定用户密码(与usermod -L功能类似)。
    • -u:解锁用户密码(与usermod -U功能类似)。
    • -d:清空用户密码(允许用户无密码登录,慎用)。
    • -e:强制用户下次登录时修改密码。
    • -n 天数:设置密码的最小有效期(用户在指定天数内不能修改密码)。
    • -x 天数:设置密码的最大有效期(超过天数密码失效)。
http://www.dtcms.com/a/537992.html

相关文章:

  • 做品牌网站找谁动漫制作
  • php网站中水印怎么做做网站1天转多钱
  • 设计素材网站源码宝安中心医院入职体检多少钱
  • windows系统上安装docker
  • linux ipc之消息队列
  • 英文企业网站开发推广最有效的办法
  • 计算机网络自顶向下方法8——应用层 HTTP报文格式与cookie机制
  • CUDA-GDB(8)——检查程序状态
  • 青海网站建设公明网站建设怎么做
  • 学院网站建设策划书村镇建设年度报表登录网站
  • 西安网站seo技术外贸企业网站模板建设可以吗
  • Rust:函数栈帧 Box智能指针
  • 如何实现大模型 “边生成边显示“
  • 网站排版教程程序员 做网站 微信公众号 赚钱
  • 无人机数据 → 三维模型与光谱指数 → 多源融合特征 → 机器学习模型与机理解释 → 生态应用案例与科研论文
  • 做性的网站有哪些内容科技股有哪些股票龙头2021
  • 深圳网站建设找智恒网络网站做竞价优化
  • 计算机视觉:基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测识别系统(Python+PySide6界面+训练代码)(源码+文档)✅
  • 重庆网站设计公司推荐永久免费虚拟主机
  • 软件自学网站房地产设计公司
  • 网络科普:自治系统编号
  • 网站不显示index.html北京最大的广告制作公司
  • TCP 消息分段与粘包问题的完整解决方案
  • 网站怎么运营推广电话销售管理系统
  • 邢台公司网站建设南漳网站制作
  • 度假村网站模板关键词研究工具
  • 【算法】day13 链表
  • 可以做网站的语言济南泰安网站建设公司
  • 超级工程网站建设上海中心大厦wordpress 登陆后台
  • 淮安网站定制wordpress多用户图库