logo

Linux用户密码管理


喝不得块
不开灯 2023-11-22 14:22:31 21847
分类专栏: 资讯

在前面的步骤中,我们已经顺利的搭建了一台 workstation 充当个人工作站,以及另外 server1 和 server2 充当服务器,接下来我们开始一步一步学习如何使用Linux。

管理用户密码

更改用户密码及密码策略

在前面的文章中介绍到,在/etc/passwd文件的第二列,是最初存放密码的位置,后面为了安全,将密码从一个全局可读的文件中,迁移到了仅允许root用户进行管理的/etc/shadow文件,同样,可以使用getent命令获取某个用户的密码条目:

$ sudo getent shadow funlinux
funlinux:$6$BYxMJ5HZyXHfzqlN$nCP...ommit..50:19669:0:99999:7:::

以上输出的内容,和/etc/passwd文件的类似,也是由冒号:作为分隔符,分成若干列,具体含义请看下表:

简述 描述
1 登录名 用户登录系统的名称
2 已加密密码 使用哈希512加密后的内容,如果该列为空,则代表本地登录无需密码;如果在加密的密码前有!!则代表密码被锁定,如果在加密的密码前有一个!,代表账户被锁定,如果有且只有两个!!则代表密码未设置。
3 上次最近一次修改密码的时间 这个时间使用的是距离 1970-01-01 UTC 时钟开始的天数
4 最短密码周期 代表从上一次修改密码当天算起,最短几天可以再次修改密码。默认为0 ,代表可以随时修改密码
5 最长密码周期 代表从上一次修改密码当天算起,多少天后密码将会过期,需要更新密码
6 密码过期前的警告时间 距离用户密码过期前几天,提醒用户密码将要过期
7 密码的不活跃期 可以理解为宽限期,当密码过期后,可以在这个宽限期内,可以使用旧密码认证,但是必须更新密码,否则无法登录系统
8 账户过期日期 设置账户不可登录系统的日期,它和密码的过期与否没有直接关联。两者任意一个先生效,用户均无法登录系统
9 保留 保留

这个文件对系统中任何用户来说,都是没有分配基本权限的,但是由于root用户的特殊性,以root身份可以更新该文件内容。

在第二列的已加密密码内容中,被美元符$分为三个部分:

$id$salt$encrypted_password

  • id:代表用户密码加密方式,1代表MD52a代表Blowfish(在其他Linux发行版中存在,例如SUSE),5代表SHA2566代表SHA512
  • salt:盐值,会根据加密方式不同,生成长度不同的字符串,分散在用户提供的密码中。
  • encrypted_password:被加密后的密码字符串

使用 passwd 管理密码

普通用户可以在不使用任何选项的前提下,更新自己的密码。

具有管理员权限(使用sudo提权)或 root用户可以使用passwd管理其他用户的密码。

passwd USERNAME 直接更新用户密码。

常用选项:

  • -d:删除用户密码。用户使用免密码认证登录。
  • -l: 锁定用户密码。
  • -u:解锁用户密码。
  • -e:使用户密码过期,用户下次登录系统必须重置密码。
  • --stdin: 读取标准输入作为密码。
  • -S:查看密码状态。
  1. 新建用户alan并查看用户密码状态,以及在/etc/shadow中密码详情:
$ sudo useradd alan

$ sudo passwd -S alan
alan LK 2023-11-21 0 99999 7 -1 (Password locked.)

$ sudo getent shadow alan
alan:!!:19682:0:99999:7:::
  1. 为用户设置初始密码centos,并查看密码状态:
$ sudo passwd alan
Changing password for user alan.
New password: [centos]
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: [centos]
passwd: all authentication tokens updated successfully.

# 或者使用非交互式
$ echo centos | sudo passwd --stdin alan
Changing password for user alan.
passwd: all authentication tokens updated successfully.

$ sudo passwd -S alan
alan PS 2023-11-21 0 99999 7 -1 (Password set, SHA512 crypt.)

$ sudo getent shadow alan
alan:$6$ErYNetBOrHEZwLSv$jhPo9P...ommit...:19682:0:99999:7:::
  1. 锁定用户账户密码,并查看详情;解锁用户密码
$ sudo passwd -l alan
Locking password for user alan.
passwd: Success

$ sudo passwd -S alan
alan LK 2023-11-21 0 99999 7 -1 (Password locked.)

$ sudo getent shadow alan
alan:!!$6$ErYNetBOrHEZwLSv$jhPo9...ommit...AB/:19682:0:99999:7:::

$ sudo passwd -u alan
Unlocking password for user alan.
passwd: Success

$ sudo passwd -S alan
alan PS 2023-11-21 0 99999 7 -1 (Password set, SHA512 crypt.)

$ sudo getent shadow alan
alan:$6$ErYNetBOrHEZwLSv$jhPo9P...ommit.../EAB/:19682:0:99999:7:::
  1. 设置密码过期,重置密码为 Mk40Vndc
$ sudo passwd -e alan
Expiring password for user alan.
passwd: Success

$ sudo passwd -S alan
alan PS 1970-01-01 0 99999 7 -1 (Password set, SHA512 crypt.)

$ su - alan
Password: [centos]
You are required to change your password immediately (administrator enforced).
Current password: [centos] 
New password: [Mk40Vndc]
Retype new password: [Mk40Vndc]
[alan@workstation ~]$ exit
  1. 删除用户密码,尝试使用su或 ssh alan@localhost方式登录:
$ sudo passwd -d alan
Removing password for user alan.
passwd: Success

$ su - alan
[alan@workstation ~]$ exit

$ ssh alan@localhost
alan@localhost's password: 
Permission denied, please try again.
alan@localhost's password:
Permission denied, please try again.
alan@localhost's password:
alan@localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

# 无密码账户是无法通过远程方式登录,也在一定程度上是“安全”的,有效避免网络暴力破解密码

管理用户密码周期

要想实现对用户密码生命周期的管理,有两个途径:全局设置使用chage命令

全局设置用户密码周期

管理员可以修改 /etc/login.defs文件中下列内容:

PASS_MAX_DAYS   99999   # 定义用户最长密码周期
PASS_MIN_DAYS   0       # 定义用户最短密码周期
PASS_WARN_AGE   7       # 定义用户密码到期前警告时间

「注意」:

该文件的修改仅对新建用户有效,对已经存在的用户无效。

假如设置用户迷人密码最长周期为60天,密码最短可以更改密码的周期是3

$ sudo vim /etc/login.defs
...ommit...
PASS_MAX_DAYS   60
PASS_MIN_DAYS   3
...ommit...

$ sudo useradd susan

$ sudo passwd -S susan
susan LK 2023-11-21 3 60 7 -1 (Password locked.)

$ sudo getent shadow susan
susan:!!:19682:3:60:7:::

使用chage命令修改用户密码周期

对系统中已经存在的账户,可以通过chage命令进行修改密码生命周期。

chage常用的选项如下:

  • -d:设置上次修改密码的日期,如果设置为0代表密码已经过期,强制用户下次登录时修改密码。
  • -E:指定用户账户过期日期。
  • -I:设置密码过期后的宽限天数。
  • -l:查看账户密码周期信息。
  • -m:设置密码最短密码周期。
  • -M:设置密码最长有效期。
  • -W:设置密码到期前的警告开始时间。

为了大家方便理解,可以查看下图:

图片图片

  1. 设置用户alan可以在修改密码后,最短2天后才可以重新设置密码;设置完密码后,密码有效期为30天,在密码到期前3天提醒修改密码。如果在密码到期后没有修改密码,最多给alan用户1天时间作为宽限。并设置alan账户将在2024年5月20日到期。
$ sudo chage -m 2 -M 30 -W 3 -I 1 -E 2024-05-20 alan

$ sudo chage -l alan
Last password change                                    : Nov 21, 2023
Password expires                                        : Dec 21, 2023
Password inactive                                       : Dec 22, 2023
Account expires                                         : May 20, 2024
Minimum number of days between password change          : 2
Maximum number of days between password change          : 30
Number of days of warning before password expires       : 3
  1. 设置完上述内容后,设置alan账户需要在下次登录系统时,重置用户密码:
$ sudo chage -d 0 alan

$ sudo chage -l alan
Last password change                                    : password must be changed
Password expires                                        : password must be changed
Password inactive                                       : password must be changed
Account expires                                         : May 20, 2024
Minimum number of days between password change          : 2
Maximum number of days between password change          : 30
Number of days of warning before password expires       : 3

除了使用chage -E设置账户在指定日期锁定外,别忘记了还可以通过usermod -L方式立即锁定有用户。或者使用passwd -l方式立即锁定用户密码限制用户登录。


「小贴士」

在Linux中,如果我们需要一个账户,不需要他登录操作系统,但是又需要他作为身份验证,例如文件服务器上的账户,我们可以设置该用户的shell为 /sbin/nologin:

$ sudo useradd -s /sbin/nologin  fsuser
# 或者对已经存在的更改shell
$ sudo usermod -s /sbin/nologin fsuser

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:http://www.xckfsq.com/news/show.html?id=28790
赞同 0
评论 0 条
不开灯
粉丝 0 发表 18 + 关注 私信
上周热门
10核GPU竟变9核,苹果暗改新iPad Air官网M2芯片规格  3851
统一管理、安全运维、全面审计 | 北信源安全运维审计系统“一站式服务”  3849
行业认可 | 中电安科入选嘶吼《工控安全行业应用专题报告》「荐」行者名单及全景图谱多个细分领域  3646
明天!2024 RT-Thread全球技术大会 国内场最后一天,超多惊喜放送,等你来!  3418
百信与山西建投集团举行工作会谈  3360
永中“文韵”大模型获2024数字中国创新大赛·人工智能赛道三等奖  3242
152万奖金池!昇腾AI创新大赛昇思模型开发挑战赛正式发布!  3241
国务院关于修改《国家科学技术奖励条例》的决定  3233
神州泰岳入选创业板指和创业板50指数  3061
“走进高校” 系列活动之专题讲座第14期,期待您的参与!  3058
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
信创再发力!中央国家机关台式计算机、便携式计算机批量集中采购配置标准的通知 8