00. 目录
01. 命令概述
chage - 更改用户密码过期信息
chage命令是用来修改帐号和密码的有效期限;这个信息由系统用于确定用户何时必须更改其密码。
02. 命令格式
用法:chage [选项] 登录名
- 1
03. 常用选项
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
04. 参考示例
4.1 显示帐户年龄信息
[root@redhat ~]# chage -l deng
最近一次密码修改时间 :7月 31, 2019
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@redhat ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
4.2 设置两次改变密码之间相距的最大天数
[root@itcast ~]# chage -M 90 tom
[root@itcast ~]#
- 1
- 2
chage -M 5 tom如果今天是2013-2-18用户密码在2013-2-23之前使用都正常2013-2-24会提示用户需要修改密码。
4.3 设置两次改变密码之间相距的最小天数
[root@itcast ~]# chage -m 30 tom
[root@itcast ~]# chage -l tom
最近一次密码修改时间 :8月 01, 2019
密码过期时间 :10月 30, 2019
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :30
两次改变密码之间相距的最大天数 :90
在密码过期之前警告的天数 :7
[root@itcast ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
chage -m 5 tom意思就是说如果今天是2013-2-18用户密码在2013-2-22之前无法修改2013-2-23可以修改密码。
4.4 强制用户登陆时修改口令
[root@itcast ~]# chage -d 0 tom
[root@itcast ~]#
- 1
- 2
如果接数字的话是从1970年1月1日累加的如 chage -d 5 tom修改时间就变成1970年1月6日。也可以直接接日期如 chage -d 2013-02-18 tom密码修改时间就变成了2013年2月18日。如果
用命令 chage -d 0 tom则代表该用户需立即修改密码。
4.5 账号的有效期是2020-09-30
[root@itcast ~]# chage -E '2020-09-30' tom
[root@itcast ~]# chage -l tom
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :9月 30, 2020
两次改变密码之间相距的最小天数 :30
两次改变密码之间相距的最大天数 :90
在密码过期之前警告的天数 :7
[root@itcast ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
用法也是直接接数字或者日期如 chage -E 2013-02-18 tom表示tom用户在2013年2月19日这一天失效无法使用。
默认时间是永远有效如果想要让用户永远有效改成 chage -E -1 tom即可。
4.6 过期5天数后,设定密码为失效状态
[root@itcast ~]# chage -I 5 tom
- 1
chage -M 5 -I 2 tom如果今天是2013-2-18用户密码在2013-2-23之前使用都正常2013-2-24和25号会提示用户需要修改密码如果这两天都没有修改密码账户会在2013-2-26号失效。
如果密码过使用期后永不禁用账户命令为chage -E -1 tom即可。
4.7 设置密码过期前的提醒时间
[root@itcast ~]# chage -W 7 tom
[root@itcast ~]# chage -l tom
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :90
在密码过期之前警告的天数 :7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
chage -M 5 -W 3 tom如果今天是2013-2-18在用户21 22 23号这三天登录系统时候得到距离密码最后使用时间的提示。
4.8 综合实例
[root@itcast ~]# chage -d 0 -m 0 -M 90 -W 15 tom
- 1
强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
05. 附录
内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要包括内存的初始化、分配以及释放。
在系统运行过程中,内存管理模块通过对内存的申请/释放来管理用户和OS
对内存的使用,使内存的利用率和使用效率达到最优,同时最大限度地解决系统的内存碎片问题。
鸿蒙轻内核的内存管理分为静态内存管理和动态内存管理,提供内存初始化、分配、释放等功能。
-
动态内存:在动态内存池中分配用户指定大小的内存块。
- 优点:按需分配。
- 缺点:内存池中可能出现碎片。
-
静态内存:在静态内存池中分配用户初始化时预设(固定)大小的内存块。
- 优点:分配和释放效率高,静态内存池中无碎片。
- 缺点:只能申请到初始化预设大小的内存块,不能按需申请。
本文主要分析鸿蒙轻内核静态内存(Memory Box
),后续系列会继续分析动态内存。静态内存实质上是一个静态数组,静态内存池内的块大小在初始化时设定,初始化后块大小不可变更。静态内存池由一个控制块和若干相同大小的内存块构成。控制块位于内存池头部,用于内存块管理。内存块的申请和释放以块大小为粒度。
本文通过分析静态内存模块的源码,帮助读者掌握静态内存的使用。本文中所涉及的源码,以OpenHarmony LiteOS-M
内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。
接下来,我们看下静态内存的结构体,静态内存初始化,静态内存常用操作的源代码。
1、静态内存结构体定义和常用宏定义
1.1 静态内存结构体定义
静态内存结构体在文件kernel\include\los_membox.h
中定义。源代码如下,⑴处定义的是静态内存节点LOS_MEMBOX_NODE
结构体,⑵处定义的静态内存的结构体池信息结构体为LOS_MEMBOX_INFO
,,结构体成员的解释见注释部分。
⑴ typedef struct tagMEMBOX_NODE {
struct tagMEMBOX_NODE *pstNext; /**< 静态内存池中空闲节点指针,指向下一个空闲节点 */
} LOS_MEMBOX_NODE;
⑵ typedef struct LOS_MEMBOX_INFO {
UINT32 uwBlkSize; /**< 静态内存池中空闲节点指针,指向下一个空闲节点 */
UINT32 uwBlkNum; /**< 静态内存池的内存块总数量 */
UINT32 uwBlkCnt; /**< 静态内存池的已分配的内存块总数量 */
#if (LOSCFG_PLATFORM_EXC == 1)
struct LOS_MEMBOX_INFO *nextMemBox; /**< 指向下一个静态内存池 */
#endif
LOS_MEMBOX_NODE stFreeList; /**< 静态内存池的空闲内存块单向链表 */
} LOS_MEMBOX_INFO;
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: