You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何sudo会接受哈希后的密码?

为何sudo会接受哈希后的密码?

哈哈,这个操作看起来超离谱对吧?其实这是BusyBox自带的sudo工具的一个特殊“简化实现”导致的!

咱们来拆解一下:标准的sudo验证密码时,会把你输入的明文密码用和/etc/shadow里相同的哈希算法(比如这里的SHA-256,从$5$能看出来)加密,然后再和shadow里的哈希值比对。但BusyBox为了极致精简体积,直接跳过了哈希计算这一步——它把你输入的内容直接和/etc/shadow里的哈希字符串做字面量对比。

对应你操作里的情况:

  • 当你输入明文"user"时,这个字符串和shadow里的哈希值$5$7AAMbV/R$xbGLljZDpzFCy6ReMyC1er53lFJgqRCgvZJnGrc7Q9A完全不一样,所以验证失败;
  • 当你直接粘贴这个哈希值时,两者完全匹配,自然就通过了sudo的验证。

这种实现虽然省空间,但也有明显的安全问题——比如只要能读取/etc/shadow的人,就能直接用哈希值作为密码sudo,不过在BusyBox的目标场景(比如嵌入式系统)里,可能这种权衡是被接受的。

给你再还原下你的操作过程,方便对照:

$ whoami
user
$ su
$ cat /etc/shadow
root::::::::
daemon:*:::::::
bin:*:::::::
sys:*:::::::
sync:*:::::::
mail:*:::::::
www-data:*:::::::
operator:*:::::::
nobody:*:::::::
sshd:*:::::::
user:$5$7AAMbV/R$xbGLljZDpzFCy6ReMyC1er53lFJgqRCgvZJnGrc7Q9A:::::::
$ su user
$ sudo ls -la 
Password: <-- 输入"user"
Sorry, try again.
Password: <-- 粘贴上面的哈希值
total 12
drwxr-xr-x    2 user     user          4096 Jan  1 00:00 .
drwxr-xr-x    3 root     root          4096 Aug 24  2024 ..
-rw-------    1 user     user           156 Jan  1 01:05 .ash_history

备注:内容来源于stack exchange,提问作者zachm0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:33:16