Linux学习-26-passwd命令:修改用户密码

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 Linux学习-26-passwd命令:修改用户密码,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

8.10 Linux passwd命令:修改用户密码

  • 用户管理的一项重要内容是用户口令的管理。useradd 命令命令创建新用户时,并没有设定用户密码,所以被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。 所以需要使用 passwd 密码配置和修改命令。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。passwd 命令的基本格式如下:
[root@CncLucZK ~]#passwd [选项] 用户名
  • 选项:

    • -S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
    • -l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 “!”,使密码失效。仅 root 用户可用;
    • -u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
    • –stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
    • -f 强迫用户下次登录时修改口令。
    • -n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
    • -x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
    • -w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
    • -d 使账号无口令。
    • -i 日期:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。
  • 例如:查看之前zk用户的密码状态

[root@CncLucZK /]# passwd -S zk
zk PS 2022-10-14 0 99999 7 -1 (Password set, SHA512 crypt.)
#上面这行代码的意思依次是:用户名 密码 设定时间(2022-10-14) 密码修改间隔时间(0) 
密码有效期(99999) 警告时间(7) 密码不失效(-1),密码已使用

“-S”选项会显示出密码状态,这里的密码修改间隔时间、密码有效期、警告时间、密码宽限时间其实分别是 /etc/shadow 文件的第四、五、六、七个字段的内容。 当然,passwd 命令是可以通过命令选项修改这几个字段的值的,例如:

  • 为用户指定空口令时,执行下列形式的命令:
[root@CncLucZK /]# passwd -d zk
  • 此命令将用户 zk的口令删除,这样用户zk下一次登录时,系统就不再允许该用户登录了。
#修改  u-dev1的密码,使其具有 365天变更、30 天密码失效
[root@CncLucZK /]# passwd -x365 -i 30 u-dev1
Adjusting aging data for user u-dev1.
passwd: Success
[root@CncLucZK /]# passwd -S  u-dev1
u-dev1 PS 2022-10-14 0 365 7 30 (Password set, SHA512 crypt.)
#直接修改 /etc/shadow 文件简单一些。

这里显示 SHA512 为密码加密方式,CentOS 6.3 加密方式已经从 MD5 加密更新到 SHA512 加密,这种加密算法更加可靠和先进就足够了。

#锁定 u-dev1 用户
[root@CncLucZK /]# passwd -l  u-dev1
Locking password for user u-dev1.
passwd: Success
#用"-S"选项査看状态,很清楚地提示密码已被锁定
[root@CncLucZK /]# passwd -S  u-dev1
u-dev1 LK 2022-10-14 0 99999 7 -1 (Password locked.)
[root@CncLucZK /]# grep 'u-dev1' /etc/shadow
u-dev1:!!$6$hqCK60I/e5joUOx8$Jfeccxf.pi9lWtLHO/.MSZ70FELRYsvEYb1f98I8EYnsigVZ/cvSHUOOubotg/WQ4gVPqnE69ZgSS8vjWxGrv1:19279:0:99999:7:::
#可以看到,锁定其实就是在加密密码之前加入了"!!",让密码失效而已
#暂时锁定 u-dev1 用户后,此用户就不能登录系统了.解锁使用如下命令
#解锁 u-dev1 用户
[root@CncLucZK /]# passwd -u u-dev1
Unlocking password for user u-dev1.
passwd: Success
[root@CncLucZK /]# passwd -S  u-dev1
u-dev1 PS 2022-10-14 0 99999 7 -1 (Password set, SHA512 crypt.)
#可以看到,锁定状态消失
[root@CncLucZK /]# grep 'u-dev1' /etc/shadow
u-dev1:$6$hqCK60I/e5joUOx8$Jfeccxf.pi9lWtLHO/.MSZ70FELRYsvEYb1f98I8EYnsigVZ/cvSHUOOubotg/WQ4gVPqnE69ZgSS8vjWxGrv1:19279:0:99999:7:::
#密码前面的 "!!" 删除了
#调用管道符,给 zk 用户设置密码 "123456"
[root@CncLucZK /]# echo '123456' |passwd --stdin zk
Changing password for user zk.
passwd: all authentication tokens updated successfully.

为了方便系统管理,passwd 命令提供了 –stdin 选项,用于批量给用户设置初始密码。

使用此方式批量给用户设置初始密码,当然好处就是方便快捷,但需要注意的是,这样设定的密码会把密码明文保存在历史命令中,如果系统被攻破,别人可以在 /root/.bash_history 中找到设置密码的这个命令,存在安全隐患。

因此,如果使用这种方式修改密码,那么应该记住两件事情:第一,手工清除历史命令;第二,强制这些新添加的用户在第一次登录时必须修改密码(具体方法参考 “chage” 命令)。

注意,并非所有 Linux 发行版都支持使用此选项,使用之前可以使用 man passwd 命令确认当前系统是否支持。

  • 我们使用 root 账户修改 u-dev1普通用户的密码,可以使用如下命令:
[root@CncLucZK ~]# passwd u-dev1
Changing password for user u-dev1.
New password: 			#直接输入新的口令,但屏幕不会有任何反应1234abcd	
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
#口令太简单或过短的错误!这里只是警告信息,输入的密码依旧能用
Retype new password:    #再次验证输入的密码,再输入一次即可1234abcd
passwd: all authentication tokens updated successfully.	#提示修改密码成功

#正确设置后密码后显示结果:密码要大于8位
[root@CncLucZK /]# passwd u-dev1
Changing password for user u-dev1.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

  • 当然,也可以使用 passwd 命令修改当前系统已登录用户的密码,但要注意的是,需省略掉 “选项” 和 “用户名”。例如,我们登陆 u-dev1用户,并使用 passwd 命令修改 u-dev1 的登陆密码,执行过程如下:

  • 登陆 u-dev1用户是用Xshell远程连接工具新建会话,输入之前新建的用户账户密码进行登陆,而非用命令su – u-dev1切换,因为这样切换过去的账户,它的登陆信息还是切换之前的账户。
    在这里插入图片描述

  • 输入用户名点击确定

在这里插入图片描述

  • 接下来输入密码即可进行登陆
    在这里插入图片描述
[u-dev1@CncLucZK ~]$ passwd
Changing password for user u-dev1.
Current password: 											#这里输入原有的密码
New password: 												#这里输入新口令
BAD PASSWORD: it is WAY too short 							#口令检验不通过,请再想个新口令
BAD PASSWORD: The password is the same as the old one		#密码相同不通过
New password: 												#这里输入新口令
Retype new password: 										#初次通过口令验证再重复这个口令的输入
passwd: all authentication tokens updated successfully.     #成功修改用户密码。输错密码有次数限制。

普通用户只能使用 passwd 命令修改自己的密码,而不能修改其他用户的密码。

可以看到,与使用 root 账户修改普通用户的密码不同,普通用户passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。不仅如此,此种修改方式对密码的复杂度有严格的要求,新密码太短(最好8位长的口令)、太简单,新旧密码相同都会被系统检测出来并禁止用户使用。

很多Linux 发行版为了系统安装,都使用了 PAM 模块进行密码的检验,设置密码太短、与用户名相同、是常见字符串等,都会被 PAM 模块检查出来,从而禁止用户使用此类密码。

而使用 root 用户,无论是修改普通用户的密码,还是修改自己的密码,都可以不遵守 PAM 模块设定的规则,就比如我刚刚给 u-dev1用户设定的密码是 “123456”,系统虽然会提示密码过于简单,但依然可以设置成功。当然,在实际应用中,就算是 root 身份,在设定密码时也要严格遵守密码规范,因为只有好的密码规范才是服务器安全的基础。

参考文献:
Linux passwd命令:修改用户密码
Linux 用户和用户组管理

下一篇:Linux学习-27-usermod、chage、userdel和id等用户信息相关命令

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/123765.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!