前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >统信服务器操作系统【用户账户密码策略管理】

统信服务器操作系统【用户账户密码策略管理】

作者头像
Kevin song
发布2024-05-30 16:36:56
1890
发布2024-05-30 16:36:56
举报

Linux系统中每个普通用户都有一个账号,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,具有特殊的存在意义,其中最重要的用户就是管理员账户,默认的用户名为root(也就是超级用户)。通过操作命令行能够对用户文件进行创建、修改、删除更改密码等操作。

用户账号信息有关的文件

  • /etc/passwd:用户账号信息文件。
  • /etc/shadow:用户账号信息加密文件。
  • /etc/group:组信息文件。
  • /etc/default/useradd:定义默认设置文件。
  • /etc/login.defs:系统广义设置文件。
  • /etc/skel:默认的初始配置文件目录。

`useradd` 命令用于创建新的用户,`usergroup` 命令用于创建新的用户组,而 `gpasswd` 命令用于管理用户组的密码和成员。

创建ytzmdz用户

代码语言:javascript
复制
useradd ytzmdz

删除ytzmdz用户

代码语言:javascript
复制
userdel -r ytzmdz

使用userdel命令删除用户时,默认不会删除用户的家目录和邮件目录。如果需要将用户的家目录和邮件目录一起删除,需要使用"-r"选项。

创建ytzmdzs用户组(用户组gid 550)

代码语言:javascript
复制
groupadd  -g 550 ytzmdzs

删除ytzmdzs用户组

代码语言:javascript
复制
groupdel ytzmdzs

查看ytzmdzs用户组

代码语言:javascript
复制
grep "ytzmdzs" /etc/group

将ytzmdz用户加入ytzmdzs组

代码语言:javascript
复制
gpasswd -a ytzmdz ytzmdzs

将ytzmdz用户从ytzmdzs中删除

代码语言:javascript
复制
gpasswd -d ytzmdz ytzmdzs

创建ytzmdz用户指定 UID(550)初始组(ytzmdzs)附加组(root)家目录(/home/ytzmdz/)用户说明(ytzmdz user)和用户登录Shell(/bin/bash)

代码语言:javascript
复制
useradd -u 550 -g ytzmdzs -G root -d /home/ytzmdz -c "ytzmdz user" -s /bin/bash ytzmdz

创建系统应用账户推荐指定shell为nologin,避免用户登录系统造成安全风险

创建zabbix用户组

代码语言:javascript
复制
groupadd  zabbix

创建zabbix用户设置属组

代码语言:javascript
复制
useradd -s /sbin/nologin -M -g zabbix zabbix
  • -s表示指定用户所用的shell,此处为/sbin/nologin,表示不登录系统
  • -M表示不创建用户主目录
  • -g表示指定用户的组名为zabbix
  • zabbix表示用户名

usermod

usermod命令修改系统帐户及账户相关的各项属性。如果用户的数字用户ID、用户名或用户的主目录发生更改,则必须确保在执行此命令时,命名用户未执行任何进程。usermod命令的操作修改的是/etc/passwd和/etc/shadow这两个文件中的内容。

修改用户注释说明

代码语言:javascript
复制
usermod -c "ytzmdz account"  ytzmdz

修改登录时的目录

代码语言:javascript
复制
usermod -d /home/ap/ytzmdz -m ytzmdz

修改用户shell

代码语言:javascript
复制
usermod -s /bin/sh ytzmdz

修改用户名

代码语言:javascript
复制
usermod -l ytzmdz ytzmdzs

修改用户UID

代码语言:javascript
复制
usermod -u 1050 ytzmdz

修改用户GID

代码语言:javascript
复制
usermod -g 1050   ytzmdz

修改用户的UID与GID

代码语言:javascript
复制
usermod -u 1050 -g 1050 ytzmdz

将用户添加wheel组

代码语言:javascript
复制
usermod  -a -G wheel ytzmdz

撤销用户附加wheel组

代码语言:javascript
复制
gpasswd -d ytzmdz wheel

锁定用户帐户

代码语言:javascript
复制
usermod -L ytzmdz

解锁用户帐户

用户锁定后/etc/shadow中密钥字段自动加了一个叹号,解锁后去除。

代码语言:javascript
复制
usermod -U ytzmdz

将系统账户的Shell修改为/sbin/nologin

代码语言:javascript
复制
usermod -L -s /sbin/nologin zabbix

设置用户账号过期日期(设置账户2025-10-01过期)

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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用户的设置信息

代码语言:javascript
复制
chage -l root

账户密码参数介绍

  • 最近一次密码修改时间:5月 25, 2025
  • 密码过期时间:8月 23, 2025
  • 密码失效时间:从不
  • 账户过期时间:从不
  • 两次改变密码之间相距的最小天数:7
  • 两次改变密码之间相距的最大天数:90
  • 在密码过期之前警告的天数:7

密码过期(Password Expiration):密码过期是指系统设定的密码使用时间限制,超过设置时间后,用户将被强制要求更改密码。是一项安全措施,用于确保密码不会长时间使用,从而减少密码被破解的风险。密码过期后账户登录系统提示需要修改密码,可以通过chage命令查看和设置密码的过期时间。

密码失效(Password Expired):当密码过期后,如果用户没有在规定的时间内更改密码,密码就会失效。密码失效意味着用户将无法使用该密码登录系统,直到他们更改密码为止。系统管理员可以通过配置来强制用户在密码过期后立即更改密码。

设置 root 密码永不过期

代码语言:javascript
复制
chage -M 99999 root

创建用户ytzmdz

设置密码最近一次修改日期为指定日期

代码语言:javascript
复制
chage -d 2024-05-25 ytzmdz

用户下次登录必须修改密码

代码语言:javascript
复制
chage  -d 0  ytzmdz

密码失效时间

代码语言:javascript
复制
chage -I -1  ytzmdz

账户过期时间(0表示立马过期,-1 永不过期)

代码语言:javascript
复制
chage  -E "2024-12-25" ytzmdz

设置用户密码时间永不过期

代码语言:javascript
复制
chage -M 99999 ytzmdz

密码可以更改最小天数(0 天表示随时可以更改)

代码语言:javascript
复制
chage -m 7 ytzmdz

账户设置多个密码策略

代码语言:javascript
复制
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 文件参数

代码语言:javascript
复制
[root@localhost ~]# useradd  -D      
GROUP=100
HOME=/home
INACTIVE=30
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_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

代码语言:javascript
复制
export TMOUT=300 

重新加载系统环境变量文件

代码语言:javascript
复制
source  /etc/profile
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档