Linux学习-26-passwd命令:修改用户密码
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等用户信息相关命令
Linux学习-26-passwd命令:修改用户密码相关推荐
- linux下passwd命令修改用户密码
passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码:请看下面的例子: [root@localhost ~]# passwd 注:没有加任何用户,我是用root用户来执行的passwd ...
- 【Linux】通过 Shell 脚本修改用户密码
1. Linux 中修改用户密码 Linux 中要修改一个用户的密码通常是使用 passwd 命令来完成,命令格式如下. #一般使用格式 passwd [username] [注]:若其后不加任何 ...
- linux修改密码最短生存时间,Linux基础命令---修改用户密码
passwd 更改用户密码,超级用户可以修改所有用户密码,普通用户只能修改自己的密码.这个任务是通过调用LinuxPAM和LibuserAPI来完成的.本质上,它使用LinuxPAM将自己初始化为一个 ...
- passwd命令修改密码_Linux passwd命令–更改用户密码
passwd命令修改密码 介绍 (Introduction) Linux passwd command changes a user's password. A user can only chang ...
- linux用usermod修改密码,Linux笔记(usermod命令,用户密码管理,mkpasswd)
一.usermod命令 usermod 更改用户属性的命令 -u +号码 +用户名 更改uid -g +号码/组名 +用户名 更改gid -d +/路径 +用户名 ...
- Linux学习:shell 命令(用户管理)
(1)创建用户:useradd 语法:sudo useradd -s /bin/bash -g itcast -d /home/itcast -m itcast 参数: -s :指定 shell -g ...
- linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...
本文章总结了如何手动.自动修改本地用户密码及远程机器的用户密码.对做自动化测试提供了自动修改用户密码的原理及方法. 修改本地用户密码: 1.交互配置本地用户: 以root用户: passwd Chan ...
- 在linux下修改用户密码
修改本地用户密码: 1.交互配置本地用户: 以root用户: passwd <username> Changing password for user dewang. New UNIX p ...
- linux 修改超级权限密码,linux 修改用户密码
本文章总结了如何手动.自动修改本地用户密码及远程机器的用户密码.对做自动化测试提供了自动修改用户密码的原理及方法. 修改本地用户密码: 1.交互配置本地用户: 以root用户: passwd Chan ...
- linux下修改组的密码,Linux用户和组的操作(八) 修改用户密码 passwd
使用passwd(password简写)命令修改用户密码. passwd命令行选项: 选项 含义 -l 锁住用户的密码,在/etc/shadow第2字段前增加! -u 解锁用户的密码,去掉/etc/s ...
最新文章
- The Elements of C# Style -Naming
- MySQL Replication--多线程复制MTS
- 20155303 2016-2017-2 《Java程序设计》第四周学习总结
- 2017.9.4 黑白棋 失败总结
- java编写计算器实现cancel_用Java编写的简易计算器
- 嵌入式软件可靠性设计
- 计算机三级网络技术-----DHCP报文分析
- 记一篇IT培训日记050-嗯嗯,差距不大
- 2020年如何运营抖音、快手、视频号3个短视频平台
- 钉钉申请发起后台提现接口
- 磁盘满了,却找不到大文件
- Taylor公式和插值多项式
- 系统非功能需求(质量属性)
- 学习类APP如何正确激发孩子的学习兴趣和提升数学思维能力?
- 【R语言科研绘图】--- 柱状图
- MongoDB 分片总结
- Arduino使用水位传感器
- python是否高送转预测股票_什么样条件股票具备高送转呢一般什么时候送转
- PHP笔记:Cookie和Session应用
- 5个理由,你值得拥有电子实验记录本(ELN)