8.10 Linux修改系统用户密码(passwd命令)

简介: 学习 useradd 命令我们知道,使用此命令创建新用户时,并没有设定用户密码,因此还无法用来登陆系统,本节就来学习 passwd 密码配置命令 。

学习 useradd 命令我们知道,使用此命令创建新用户时,并没有设定用户密码,因此还无法用来登陆系统,本节就来学习 passwd 密码配置命令 。

passwd 命令的基本格式如下:

[root@localhost ~]#passwd [选项] 用户名

选项:

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

例如,我们使用 root 账户修改 lamp 普通用户的密码,可以使用如下命令:

[root@localhost ~]#passwd lamp
Changing password for user lamp.
New password: <==直接输入新的口令,但屏幕不会有任何反应
BAD PASSWORD: it is WAY too short <==口令太简单或过短的错误!这里只是警告信息,输入的密码依旧能用
Retype new password: <==再次验证输入的密码,再输入一次即可
passwd: all authentication tokens updated successfully. <==提示修改密码成功

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

[root@localhost ~]#passwd
\#passwd直接回车代表修改当前用户的密码
Changing password for user vbird2.
Changing password for vbird2
(current) UNIX password: <==这里输入『原有的旧口令』
New password: <==这里输入新口令
BAD PASSWORD: it is WAY too short <==口令检验不通过,请再想个新口令
New password: <==这里再想个来输入吧
Retype new password: <==通过口令验证!所以重复这个口令的输入
passwd: all authentication tokens updated successfully. <==成功修改用户密码

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

可以看到,与使用 root 账户修改普通用户的密码不同,普通用户修改自己的密码需要先输入自己的旧密码,只有旧密码输入正确才能输入新密码。不仅如此,此种修改方式对密码的复杂度有严格的要求,新密码太短、太简单,都会被系统检测出来并禁止用户使用。

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

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

passwd 命令还提供了一些选项,接下来给大家介绍各个选项的具体用法。

【例 1】

\#查看用户密码的状态
[root@localhost ~]# passwd -S lamp
lamp PS 2013-01-06 0 99999 7 -1 (Password set, SHA512 crypt.)
\#上面这行代码的意思依次是:用户名 密码 设定时间(2013*01-06) 密码修改间隔时间(0) 密码有效期(99999) 警告时间(7) 密码不失效(-1),密码已使用

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

\#修改 lamp的密码,使其具有 60 天变更、10 天密码失效
[root@localhost ~]# passwd -x 60 -i 10 lamp
[root@localhost ~]# passwd -S lamp
lamp PS 2013-01-06 0 60 7 10 (Password set, SHA512 crypt.)
但我个人认为,还是直接修改 /etc/shadow 文件简单一些。

这里显示 SHA512 为密码加密方式,CentOS 6.3 加密方式已经从 MD5 加密更新到 SHA512 加密,我们不用了解具体的加密算法,只要知道这种加密算法更加可靠和先进就足够了。

【例 2】

\#锁定 lamp 用户
[root@localhost ~]# passwd -I lamp
Locking password for user lamp.
passwd:Successg
\#用"-S"选项査看状态,很清楚地提示密码已被锁定
[root@localhost ~]# passwd -S lamp
lamp LK 2013-01-06 0 99999 7 -1 (Password locked.)
[root@localhost ~]# grep "lamp" /etc/shadow
lamp:!! $6$ZTq7o/9o $lj07iZ0bzW.D1zBa9CsY43d04onskUCzjwiFMNt8PX4GXJoHX9zA1S C9.i Yzh9LZA4fEM2lg92hM9w/p6NS50.:15711:0:99999:7:::
\#可以看到,锁定其实就是在加密密码之前加入了"!!",让密码失效而已

暂时锁定 lamp 用户后,此用户就不能登录系统了。那么,怎么解锁呢?也一样简单,使用如下命令即可:

\#解锁 lamp 用户
[root@localhost ~]# passwd -u lamp
Unlocking password for user lamp.
passwd:Success
[root@localhost ~]# passwd -S lamp
lamp PS 2013-01-06 0 99999 7 -1 (Password set, SHA512 crypt.)
\#可以看到,锁定状态消失
[root@localhost ~]# grep "lamp" /etc/shadow
lamp: $6$ZTq7cV9o $lj07iZ0bzW.D1zBa9CsY43d04onskUCzjwiFMNt8PX4GXJoHX9zA1S C9.iYz h9LZA4fEM2lg92hM9w/p6NS50.:15711:0:99999:7:::
\#密码前面的 "!!" 删除了

【例 3】

\#调用管道符,给 lamp 用户设置密码 "123"
[root@localhost ~]# echo "123" | passwd --stdin lamp
Changing password for user lamp.
passwd: all authentication tokens updated successfully.

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

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

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

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

目录
相关文章
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1173 1
二、Linux文本处理与文件操作核心命令
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1867 58
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1807 2
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
1200 0
Linux内存问题排查命令详解
|
Oracle 关系型数据库 Linux
Linux下设置用户密码
设置用户的密码使用passwd命令
385 0
|
Linux Shell 数据安全/隐私保护
linux用户相关操作,linux创建添加新用户 删除用户 ,更改用户 ,设置用户密码等等
linux用户相关操作,linux创建添加新用户 删除用户 ,更改用户 ,设置用户密码等等目录 创建用户  查看所有用户信息 id命令查看用户信息:  说明: 设置密码 3用户名切换用户 修改用户信息 扩展: 删除附加组 删除用户 总结   创建用户 eg:useradd -m jia -g...
1891 0
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
887 137
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
1458 143
linux命令—tree
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
1084 16
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
2033 13