上来就干
当我们使用服务器的时候,有时候需要一些非常简单的密码,来方便使用,但是自己完全可控的环境下,我们希望我们的密码足够的简单,比如,可能它的密码就是123,或者是1?
但是当你直接使用passwd的时候,会受到PAM配置的限制,
所以我们用点奇淫技巧,比如我们把mark的密码设置为1
echo "mark:1" | sudo chpasswd -c SHA256
这样就可以了,将上面替换mark
和1
为你的username和密码即可
echo
和 chpasswd
命令组合工作原理详解
当您执行 echo "baijs:1" | sudo chpasswd -c SHA256
这个命令时,实际上是将两个命令通过管道(pipe)组合在一起。这里详细解释整个过程:
1. 命令分解
这个命令包含三个主要部分:
echo "baijs:1"
- 输出文本|
- 管道符号sudo chpasswd -c SHA256
- 以管理员权限运行的密码修改命令
2. echo
命令工作原理
echo
是一个基本的 Unix/Linux 命令,用于输出文本:
echo "baijs:1"
会输出文本字符串 “baijs:1”- 这个字符串采用特定格式:
用户名:新密码
- 如果在终端单独运行这条命令,您会在屏幕上看到 “baijs:1”
3. 管道符号 |
的作用
管道符号 |
是 Unix/Linux 系统中的重要概念:
- 它将前一个命令的标准输出 (stdout) 连接到后一个命令的标准输入 (stdin)
- 简而言之,它把第一个命令的输出作为第二个命令的输入
- 管道允许命令链接,形成数据处理流水线
4. chpasswd
命令功能
chpasswd
是一个系统管理命令,专门用于批量更新密码:
- 它从标准输入读取
用户名:密码
格式的文本 - 可以同时处理多行,实现批量密码更新
-c SHA256
选项指定使用 SHA256 算法进行密码加密(而不是默认的加密方式)
5. sudo
的必要性
sudo
命令用于以管理员(root)权限执行后面的命令:
- 修改密码是一项需要特殊权限的敏感操作
- 没有
sudo
,普通用户无法修改其他用户的密码 - 执行时,系统可能会要求输入您自己的密码来验证权限
6. 整个过程详解
当您执行完整命令时,以下是背后发生的步骤:
echo "baijs:1"
生成文本 “baijs:1”- 这个文本通过管道
|
被传送到chpasswd
命令 sudo
提升chpasswd
命令的执行权限到管理员级别chpasswd
从管道接收文本 “baijs:1”chpasswd
解析这个文本,识别用户名 “baijs” 和新密码 “1”- 使用指定的 SHA256 算法加密密码 “1”
- 更新系统密码数据库(通常是 /etc/shadow 文件)
- 用户 “baijs” 的密码被成功更改为 “1”
7. 系统如何实际存储密码
密码不会以明文形式存储:
- 密码经过 SHA256 算法单向加密后存储
- 实际存储在
/etc/shadow
文件中 - 格式大致为:
用户名:加密密码:上次修改时间:...其他密码政策信息
- 即使有 root 权限也无法还原看到原始密码,只能重置
8. 与直接使用 passwd
命令的区别
传统的 passwd
命令是交互式的:
passwd
会提示用户输入新密码,然后再次确认passwd
内置执行密码策略检查(如长度、复杂性)chpasswd
允许非交互式、批量处理,适合脚本使用- 使用
chpasswd
可以绕过某些交互式检查
9. 使用注意事项
- 这种方法可能绕过系统默认的密码复杂度要求
- 管道传输的密码在命令历史中可见,存在安全风险
- 在多用户系统中应谨慎使用这种方法
- 命令执行后,新密码立即生效
这种组合命令的方式在系统管理和自动化脚本中非常常见,它允许以非交互方式完成通常需要用户交互的任务。