Linux中通过配置文件 /etc/shadow 来存储用户密码的相关信息, 本篇文章用于简要分析该配置文件中各个字段代表的意义及其相关操作.

之前在系统中添加了用户帐户user1, 现在通过user1在配置文件/etc/shadow中各个字段分析user1:$id$salt$encrypted:16655:50:100:20:10:17021:

配置文件/etc/shadow中共有9个字段, 每个字段通过 : 隔开, 每个字段的含义如下:1. login name: 用户名

2. encrypted password: 加密后的密码, 其格式为: $加密级别$系统随机添加的杂质字符串$密码的铭文形式

# 加密级别表示方法: 1为MD5加密, 5为SHA256加密, 6为SHA512加密

# 如果第2字段为: !或*表示该为无效字段, 用户无法通过密码方式登录账户, 可以通过root用户使用passwd指令来对指定账户进行修改; 空表示用户登录时就会强制要求修改密码

3. date of last password changed: 最近一次修改密码的时间: 表示上次修改密码的日期距离Unix元年(1970-01-01)的天数, 0表示用户下次登录后自行修改密码, 空表示该字段无意义

4. minimum password age: 密码最短使用时长: 表示修改完密码后至少经过多少天可以再次修改密码, 0或空表示没有设置该字段

5. maximum password age: 密码最长使用时长: 表示修改完密码后最多使用多少天系统会发出警告要求用户更改密码, 空表示用户密码不会有最长使用时长, 警告时长和容忍市场的限制

# 如果该字段有意义时, 如果超出该期限但在失效日期之前密码可以使用, 但是会向用户发出警告

6. password warning period: 密码过期前警告时长: 表示在距离账户失效日期(第8字段)前多少天会发出警告要求用户更改密码, 0或空表示没有警告时长

7. passwoerd inactivity period: 密码过期后容忍时长: 表示在距离账户实现日期(第8字段)后多少天会强制用户修改密码, 空表示没有容忍时长

8. account expiration date: 账户失效日期: 表示账户失效日期距离Unix元年的天数, 空表示永不失效

9. reserved field: 保留字段

说明:

3-8字段都是以相对时间长度而不是具体日期来表示, 单位都是天, 各自的参考点不一样:

3和8字段都是以Unix元年(1970-01-01)为参考点,

4和5字段都是以第3字段表示的日期为参考点,

6和7字段都是以第8字段表示的日期为参考点

3-8字段的相对关系如下图所示:

=============================================================

以下是通过指定来对用户在/etc/shadow中个字段的相关配置(因为涉及到用户管理操作, 因此需要通过root账户来进行操作):

对于第2字段用户密码可以通过passwd命令来进行修改

passwd

作用: 修改指定用户密码的相关信息

格式: passwd [OPTIONS] USERNAME

主要选项:

-e: 强制指定用户的密码现在过期, 迫使用户下次登录时修改密码

--stdin: 从标准输入接收输入的字符串作为密码, 此时只需要出入一次字符串就行

# echo 'user@123' | passwd --stdin user1    #将user1密码修改为user@123

查看修改后的user1的密码

# cat /etc/shadow | grep 'user1'

user1:$6$YKpyiOFB$qTIZ1zqAtDTO7Ztb.K5PdpIfIMrt/lREJUop0N0BqJxoq62ih2NIBgCNwsIMN/QwMz88x5MAah1yU48YcL4d70:0:0:99999:7:::    #第2字段已经修改为加密格式的密码

对于第3-8字段用户密码的各个时间限制可以通过chage来进行修改

chage

作用: 修改用户密码相关信息

格式: chage [OPTIONS] USERNAME

主要选项:

-d LAST_DAY: 修改/etc/shadow的第3字段, 可使用YYYY-MM-DD的日期格式或使用距离1970-01-01的天数

-m MIN_DAYS: 修改/etc/shadow的第4字段, 使用距离第3字段的天数

-M MAX_DAYS: 修改/etc/shadow的第5字段, 使用距离第3字段的天数

-W WARN_DAYS: 修改/etc/shadow的第6字段, 使用距离第8字段的天数

-I INACTIVE: 修改/etc/shadow的第7字段, 使用距离第8字段的天数

-E EXPIRE_DATE: 修改/etc/shadow的第8字段, 可使用YYYY-MM-DD的日期格式或使用距离1970-01-01的天数# chage -d 2015-08-01 -m 50 -M 100 -W 30 -I 10 -E 2016-08-01 user1    #将user1的上次修改密码时间为2015-08-01, 最短修改密码时长为50天, 最长修改密码时长为100天, 发出警告时长为密码过期前30天, 密码容忍时长为过期后10天, 密码失效时间为2016-08-01

# cat /etc/shadow | grep 'user1'

user1:$6$YKpyiOFB$qTIZ1zqAtDTO7Ztb.K5PdpIfIMrt/lREJUop0N0BqJxoq62ih2NIBgCNwsIMN/QwMz88x5MAah1yU48YcL4d70:16648:50:100:30:10:17014:    #第3-8字段已经按要求修改

小结:

修改配置文件/etc/shadow中各字段的参数比较简单, 只是第3-8字段表示的意义不同, 关键是各个字段的参照物不相同, 理解时注意各个字段的参考点, 在实际操作中会有很大帮助.

本人水平有限, 如有理解不当的地方, 请大家给予指正, 非常感谢!

linux基础分支,Linux基础--/etc/shadow中字段的分支和操作相关推荐

  1. linux的子进程和父进程,[Linux进程]在父进程和子进程中分别对文件进行操作

    [Linux进程]在父进程和子进程中分别对文件进行操作 发布时间:2020-04-10 19:36:49 来源:51CTO 阅读:917 作者:银河星君 /*子进程和父进程同时对一个文件进行写操作导致 ...

  2. linux生成sha512密码,python生成shadow中密码(SHA512)

    在很久很久以前写过一篇文章讲linux中shadow文件的数据构成(https://blog.csdn.net/cracker_zhou/article/details/50817743). 当然在文 ...

  3. c linux time微秒_Linux基础知识(Linux系统、Linux中的链表)

    Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构.硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务 ...

  4. linux中_Linux基础知识(Linux系统、Linux中的链表)

    Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构.硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务 ...

  5. 服务器开发系列(三)——Linux与Windows操作系统基础功能对比

    系列文章目录 服务器开发系列(一)--计算机硬件 服务器开发系列(二)--Jetson Xavier NX 文章目录 系列文章目录 前言 一.操作系统概述 二.Linux和Windows的应用场景 三 ...

  6. 黑马-零基础入门linux系统运维

    Day1:Linux发展史与安装 一.Linux发展史 1.Linux前身-Unix 1968年 Multics项目 MIT.Bell实验室.美国通用电气有限公司走到了一起,致力于开发Multics项 ...

  7. 嵌入式Linux视频笔记----Linux基础入门

    https://www.bilibili.com/video/BV1JK4y1t7io/?spm_id_from=333.788.videocard.2 运行于ARM-A7的嵌入式Linux系统基础知 ...

  8. linux+系统优化基础,Linux入门基础(三):Linux用户及权限基础

    用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

  9. 详细介绍Linux shell脚本系列基础学习(列表)

    本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...

最新文章

  1. 慕课python课后作业_python基础1习题练习
  2. 10行 python 代码做出哪些酷炫的事情?
  3. 微众银行 CAIO 杨强:人工智能的新三大定律(附视频)
  4. linux-命令替换-通配符-重定向-管道
  5. iOS推送小结--swift语言
  6. c语言编译成功,[C/CPP系列知识] 那些程序C语言可以编译通过但C++无法编译成功 Write a C program that won’t compile in C++...
  7. 机器学习模型部署_9月版部署机器学习模型
  8. ISE应用入门的一些问题
  9. 详解MySQL双活同步复制四种解决方案
  10. python编程狮app_Python编程狮官方app下载_Python编程狮安卓app下载 v1.0.8 - 创意手游...
  11. 全网首发:麒麟平台更新时提示错误:无法解析域名“archive.kylinos.cn”
  12. 应用程序无法正常启动(0xc00007b)
  13. 自控原理学习笔记-反馈控制系统动态模型(2)-结构图及信号流图
  14. 组件(component)技术介绍
  15. MapReduce论文中文翻译
  16. 在html中下面那是段落标签,【单选题】在 HTML 中,下面是段落标签的是 A. 与 B. 与 C. 与 D. 与...
  17. Scala简介以及基本语法(一)
  18. Drupal9自定义module添加多个定时任务
  19. WebApi实现代理Http请求
  20. 麒麟AI首席科学家现世

热门文章

  1. Qt工程文件Pro中判断Qt版本号
  2. SPI四种工作模式时序图
  3. session 存放对象变量,及遇到的奇怪现象
  4. oracle索引中丢失in或out参数,oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1...
  5. ppt流程图字体太小_PPT演示让你尴尬的5大突发情况,早学早预防!
  6. python实现图片转字符画_Python实现图片转字符画的示例代码
  7. probable oracle net,ORA-28547: connection to server failed, probable Oracle Net admin error
  8. 数据结构与算法 / 红黑树
  9. 小明分享|nRF52840 蓝牙模块连接测试
  10. python子进程关闭fd_如果创建了multiprocessing.Pool,Python子进程wait()将失败