1. 关于chpasswd
chpasswd 命令用于 Linux 系统中用于批量修改用户的密码。它通常与 shell 脚本结合使用,以便高效地更新多个用户的密码信息。
chpasswd 命令的基本语法:
参数解释:
- - [options]: 可以指定一些选项来改变 chpasswd 的行为。
- - file: 可选参数,指定包含用户名和新密码的文件路径。如果未指定文件,则从标准输入读取。
常见[options]选项
- -e: 将密码转换为加密格式后存储。
- -h <hash>: 使用指定的哈希算法(如 SHA-512)来加密密码。
- -R <directory>: 指定 shadow 文件所在的目录。
chpasswd 命令要求输入的格式为每行一个用户,格式如下:
username:password
- - username:指定要更改密码的用户账户名;
- - password:指定新密码。如果密码为空,表示删除该用户的密码;
2. chpasswd基础使用示例
假设你有一个文本文件 users.txt,其中包含了需要更改密码的用户列表,格式如下:
john:mynewpassword
jane:newpass123
然后你可以使用以下命令来批量更改这些用户的密码:
如果你想通过标准输入来提供用户列表,可以这样做:
当然,你也可以使用多行输入:
注意事项
- 使用 chpasswd 时,请确保提供的密码符合系统安全策略,通常情况下,密码应该足够复杂,并且符合 /etc/login.defs 文件中的密码策略设置。
- chpasswd 命令通常需要 root 权限才能执行,因为修改密码涉及系统安全。
3. 生产运维示例
假设你需要创建一个脚本来批量更改一组用户的密码,你可以创建一个简单的 shell 脚本,如下所示:
在这个示例中,你需要先准备一个名为 users.txt 的文件,其中每一行都是用户名和新密码,格式为 username:password。
4. 结合Linux下的crontab周期性修改密码
(1)创建密码文件及改密脚本:
(2)添加crontab
注意事项:在使用crontab修改密码时,对于新手而言有一个常见的困惑就是crontab执行后未按预期修改了密码,反而是密码未被成功修改。造成此问题的原因在于crontab环境变量加载不全,导致调用shell脚本中指定的命名失败。解决办法:在crontab文件中添加环境变量,例如下面的演示: