统信服务器操作系统【用户账户密码策略管理】
Linux系统中每个普通用户都有一个账号,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,具有特殊的存在意义,其中最重要的用户就是管理员账户,默认的用户名为root(也就是超级用户)。通过操作命令行能够对用户文件进行创建、修改、删除更改密码等操作。
用户账号信息有关的文件
-
/etc/passwd:用户账号信息文件。
-
/etc/shadow:用户账号信息加密文件。
-
/etc/group:组信息文件。
-
/etc/default/useradd:定义默认设置文件。
-
/etc/login.defs:系统广义设置文件。
-
/etc/skel:默认的初始配置文件目录。
`useradd` 命令用于创建新的用户,`usergroup` 命令用于创建新的用户组,而 `gpasswd` 命令用于管理用户组的密码和成员。
创建ytzmdz用户
useradd ytzmdz
删除ytzmdz用户
userdel -r ytzmdz
使用userdel命令删除用户时,默认不会删除用户的家目录和邮件目录。如果需要将用户的家目录和邮件目录一起删除,需要使用"-r"选项。
创建ytzmdzs用户组(用户组gid 550)
groupadd -g 550 ytzmdzs
删除ytzmdzs用户组
groupdel ytzmdzs
查看ytzmdzs用户组
grep "ytzmdzs" /etc/group
将ytzmdz用户加入ytzmdzs组
gpasswd -a ytzmdz ytzmdzs
将ytzmdz用户从ytzmdzs中删除
gpasswd -d ytzmdz ytzmdzs
创建ytzmdz用户指定 UID(550)初始组(ytzmdzs)附加组(root)家目录(/home/ytzmdz/)用户说明(ytzmdz user)和用户登录Shell(/bin/bash)
useradd -u 550 -g ytzmdzs -G root -d /home/ytzmdz -c "ytzmdz user" -s /bin/bash ytzmdz
创建系统应用账户推荐指定shell为nologin,避免用户登录系统造成安全风险
创建zabbix用户组
groupadd zabbix
创建zabbix用户设置属组
useradd -s /sbin/nologin -M -g zabbix zabbix
-
-s表示指定用户所用的shell,此处为/sbin/nologin,表示不登录系统
-
-M表示不创建用户主目录
-
-g表示指定用户的组名为zabbix
-
zabbix表示用户名
usermod
usermod命令修改系统帐户及账户相关的各项属性。如果用户的数字用户ID、用户名或用户的主目录发生更改,则必须确保在执行此命令时,命名用户未执行任何进程。usermod命令的操作修改的是/etc/passwd和/etc/shadow这两个文件中的内容。
修改用户注释说明
usermod -c "ytzmdz account" ytzmdz
修改登录时的目录
usermod -d /home/ap/ytzmdz -m ytzmdz
修改用户shell
usermod -s /bin/sh ytzmdz
修改用户名
usermod -l ytzmdz ytzmdzs
修改用户UID
usermod -u 1050 ytzmdz
修改用户GID
usermod -g 1050 ytzmdz
修改用户的UID与GID
usermod -u 1050 -g 1050 ytzmdz
将用户添加wheel组
usermod -a -G wheel ytzmdz
撤销用户附加wheel组
gpasswd -d ytzmdz wheel
锁定用户帐户
usermod -L ytzmdz
解锁用户帐户
用户锁定后/etc/shadow中密钥字段自动加了一个叹号,解锁后去除。
usermod -U ytzmdz
将系统账户的Shell修改为/sbin/nologin
usermod -L -s /sbin/nologin zabbix
设置用户账号过期日期(设置账户2025-10-01过期)
usermod -e 2025-10-01 ytzmdz
usermod参数介绍
|
参数 |
参数说明 |
|
-c, --comment COMMENT |
修改用户帐号的备注文字 |
|
-d, --home HOME_DIR |
修改用户登入时的目录 |
|
-e, --expiredate EXPIRE_DATE |
修改帐号的有效期限 |
|
-f, --inactive INACTIVE |
修改在密码过期后多少天即关闭该账户 |
|
-g, --gid GROUP |
修改用户所属的群组 |
|
-G, --groups GROUPS |
修改用户所属的附加群组 |
|
-a, --append |
将用户附加到-G选项提到的补充组中,而不将其从其他组中移除 |
|
-h, --help |
获取命令帮助 |
|
-l, --login NEW_LOGIN |
修改用户帐号名称 |
|
-L, --lock |
锁定用户账号 |
|
-m, --move-home |
将主目录的内容移动到新位置(仅与-d一起使用) |
|
-o, --non-unique |
允许使用重复(非唯一)UID |
|
-p, --password PASSWORD |
修改用户密码 |
|
-R, --root CHROOT_DIR |
修改导入目录 |
|
-s, --shell SHELL |
修改用户登入后所使用的shell |
|
-u, --uid UID |
修改用户ID |
|
-U, --unlock |
解除密码锁定 |
|
-Z, --selinux-user SEUSER |
用户帐户设置新SELinux用户映射 |
账户口令有效期
useradd 命令在添加用户时参考的默认值文件主要有两个,分别是 /etc/default/useradd 和 /etc/login.defs 。
useradd 命令创建用户,系统首先读取 /etc/default/useradd 和 /etc/login.defs ,根据这两个配置文件中定义的规则添加用户,也就是向 /etc/passwd 、/etc/group 、/etc/shadow 、/etc/gshadow 文件中添加用户数据,系统会自动在 /etc/default/useradd 文件设定的目录下建立用户主目录,最后复制 /etc/skel 目录中的所有文件到此主目录中。
出于系统安全的考虑,设置口令有效期限为90天,口令到期前7天通知用户更改口令。口令有效期的设置通过修改/etc/login.defs文件
备份login.defs文件
cp -p /etc/login.defs /etc/login.defs_bak
vim /etc/login.defs

参数介绍
|
参数 |
参数说明 |
默认值 |
|
PASS_MAX_DAYS |
密码可以使用的最大天数 |
90 |
|
PASS_MIN_DAYS |
两次密码更改之间允许的最小天数 |
7 |
|
PASS_MIN_LEN |
可接受的最小密码长度 |
5 |
|
PASS_WARN_AGE |
密码过期前发出警告的天数 |
7 |
/etc/login.defs 参数详解
/etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度等。
注意,该文件的用户默认配置对 root 用户无效。并且,当此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以 /etc/passwd 和 /etc/shadow 为准。口令过期后用户重新登录时,提示口令过期并强制要求修改,不修改则无法进入系统。
|
参数 |
参数说明 |
|
MAIL_DIR /var/spool/mail |
定义了系统上邮件文件的默认目录,创建用户会自动在/var/spool/mail目录下创建用户名命名的邮箱。 |
|
PASS_MAX_DAYS 90 |
用户密码的最大有效天数,默认是90天。 |
|
PASS_MIN_DAYS 7 |
用户更改密码的最小间隔天数,默认是7天。 |
|
PASS_MIN_LEN 5 |
用户密码的最小长度,默认是5个字符。用户登录验证被PAM模块取代。 |
|
PASS_WARN_AGE 7 |
在密码过期前多少天开始警告用户,默认是7天。 |
|
UID_MIN 1000
|
普通用户ID的最小值,添加用户时,默认 UID 从 1000 开始。注意,如果手工指定了一个用户的UID是1050, 那么下一个创建的用户的 UID 就会从 1051 开始,哪怕 1000~1049 之间的 UID 没有使用。 |
|
UID_MAX 60000 |
普通用户UID的最大值,默认是60000。 |
|
SYS_UID_MIN 201 |
系统用户ID的最小值,默认是201。 |
|
SYS_UID_MAX 999 |
系统用户ID的最大值,默认是999。 |
|
GID_MIN 1000 |
普通组ID的最小值,默认是1000。 |
|
GID_MAX 60000 |
普通组ID的最大值,默认是60000。 |
|
SYS_GID_MIN 201 |
系统组ID的最小值,默认是201。 |
|
SYS_GID_MAX 999 |
系统组ID的最大值,默认是999。 |
|
CREATE_HOME yes |
当创建用户时是否自动创建用户的家目录,默认是创建用户家目录。 |
|
UMASK 077 |
默认的文件创建掩码,默认是077,意味着新创建的文件默认权限是700(只有所有者有读写执行权限), 目录是750(所有者有读写执行,组用户有读和执行权限)。 |
|
USERGROUPS_ENAB yes |
是否允许用户登录到他们不是成员的组的目录,这里是yes。 |
|
ENCRYPT_METHOD SHA512 |
密码加密的方法,这里是SHA512。 |
|
ALWAYS_SET_PATH=yes |
是否总是设置环境变量PATH,默认是yes。 |
|
LOG_UNKFAIL_ENAB no |
是否记录未知用户的登录失败尝试,默认是no。 |
chage
chage用于密码的实效管理,用来修改帐号和密码的有效期。chage命令更改密码更改与上次密码更改日期之间的天数。系统使用此信息确定用户何时必须更改其密码。chage命令修改的都是/etc/shadow文件最后6项的值。
chage 参数介绍
|
参数 |
参数说明 |
|
-d, --lastday LAST_DAY |
将最近一次密码修改时间设为“LAST_DAY“ |
|
-E, --expiredate EXPIRE_DATE |
将帐户过期时间设为“EXPIRE_DATE” 0表示马上过期,-1表示永不过期 |
|
-h, --help |
获取命令帮助信息 |
|
-I, --inactive INACTIVE |
过期 INACTIVE 天数后,设定密码为失效状态 |
|
-l, --list |
列出用户以及密码的有效期 |
|
-m, --mindays MIN_DAYS |
将两次改变密码之间相距的最小天数设为“MIN_DAYS” |
|
-M, --maxdays MAX_DAYS |
密码保持有效的最大天数 |
|
-R, --root CHROOT_DIR |
chroot 到的目录 |
|
-W, --warndays WARN_DAYS |
密码过期前,提前收到警告信息的天数 |
查看root用户的设置信息
chage -l root

账户密码参数介绍
-
最近一次密码修改时间:5月 25, 2025
-
密码过期时间:8月 23, 2025
-
密码失效时间:从不
-
账户过期时间:从不
-
两次改变密码之间相距的最小天数:7
-
两次改变密码之间相距的最大天数:90
-
在密码过期之前警告的天数:7
密码过期(Password Expiration):密码过期是指系统设定的密码使用时间限制,超过设置时间后,用户将被强制要求更改密码。是一项安全措施,用于确保密码不会长时间使用,从而减少密码被破解的风险。密码过期后账户登录系统提示需要修改密码,可以通过chage命令查看和设置密码的过期时间。
密码失效(Password Expired):当密码过期后,如果用户没有在规定的时间内更改密码,密码就会失效。密码失效意味着用户将无法使用该密码登录系统,直到他们更改密码为止。系统管理员可以通过配置来强制用户在密码过期后立即更改密码。
设置 root 密码永不过期
chage -M 99999 root
创建用户ytzmdz

设置密码最近一次修改日期为指定日期
chage -d 2024-05-25 ytzmdz
用户下次登录必须修改密码
chage -d 0 ytzmdz
密码失效时间
chage -I -1 ytzmdz
账户过期时间(0表示立马过期,-1 永不过期)
chage -E "2024-12-25" ytzmdz
设置用户密码时间永不过期
chage -M 99999 ytzmdz
密码可以更改最小天数(0 天表示随时可以更改)
chage -m 7 ytzmdz
账户设置多个密码策略
sudo chage -d 0 -E -1 -m 0 -M 90 -W 14 ytzmdz
-
-d 0 表示下次登录需要修改密码
-
-E -1 表示账户过期日期为永久有效
-
-m 0 表示密码可以更改之前的最小天数
-
-M 90 设置密码的最大有效期为 90 天
-
-W 14 设置提前警告的天数(在密码到期前 14 天提示用户)
系统登录ytzmdz

/etc/default/useradd
/etc/default/useradd 文件参数
[root@localhost ~]# useradd -DGROUP=100HOME=/homeINACTIVE=30EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes
/etc/default/useradd 文件参数介绍
|
参数 |
含义 |
|
GROUP=100 |
Linux 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组; 另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。当前采用的是私有用户组机制。 |
|
HOME=/home |
表示用户主目录的默认位置,所有新建用户的主目录默认都在 /home/目录下 |
|
INACTIVE=30 |
表示密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。 默认值是 30,代表所有新建立的用户密码过期30天后失效。"-1"表示密码永远不会失效。 |
|
EXPIRE= |
表示密码失效时间,也就是/etc/shadow 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。 |
|
SHELL=/bin/bash |
表示所有新建立的用户默认 Shell 都是 /bin/bash。 |
|
SKEL=/etc/skel |
在创建一个新用户后,该用户主目录存在.bash profile、.bashrc 等文件,文件是从 /etc/skel 目录中自动复制过来的。 因此,更改 /etc/skel 日录下的内容就可以改变新建用户默认主日录中的配置文件信息。 |
|
CREATE MAIL SPOOL=yes |
表示给新建用户建立邮箱,默认是创建。对于所有的新建用户,系统都会在 /var/spool/mail/ 目录下创建与用户名相同邮箱。 |
/etc/passwd:用户账号信息文件
用户账号信息文件中保存着系统中所有用户的主要信息,每一行代表着一个记录;每一行用户记录中定义了用户各个方面的相关属性。
/etc/passwd文件每一行由七个字段的数据组成,且字段之间用":"隔开

/etc/shadow:用户账号信息加密文件(又称为“影子文件”)
用户账号信息加密文件用于存储系统中用户的密码信息;由于/etc/passwd文件允许所有用户读取,容易导致密码泄露,因此将密码信息从该文件中分离出来,单独放置在/etc/shadow文件中。
/etc/shadow文件只有超级用户(root用户)具有读权限,其他用户均没有权限,从而保证了用户密码的安全性。密码在经由/etc/shadow保护后,在/etc/passwd文件的用户记录中只会以“X”的形式呈现。与/etc/passwd文件相似,每一行记录代表一个用户,且以“:”隔开,不同之处在于/etc/passwd中每行记录被分为九个字段。

/etc/group:组信息文件
组信息文件中保存着用户组的所有信息,每一行记录代表一个用户组;将用户分组是对用户进行管理及控制访问权限的一种手段,每个用户都属于一个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。

/etc/gshadow:组信息加密文件
组信息加密文件会保存用户组加密信息,比如说用户组管理密码就保存在此(与/etc/shadow文件相似);与/etc/group文件互补,对于大型服务器来说,拥有很多用户和组,此时会针对这些用户和组来生成一些复杂的权限模型,此时设置并管理密码就显得尤为重要。

终端的自动退出时间
系统长时间未操作退出系统,自动退出时间由/etc/profile文件的TMOUT字段(单位为秒)控制,在/etc/profile的尾部添加如下配置
vim /etc/profile
export TMOUT=300
重新加载系统环境变量文件
source /etc/profile
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)