Linux 中保存用户账号的文件是/etc/passwd,保存密码的却是/etc/shadow,没人觉得奇怪么? passwd 不是 password 么,应该保存密码呀!谁来解释解释~~

2015-12-10 16:15:30 +08:00
 Mark24

如题
强迫症……谁能给个解释

4947 次点击
所在节点    问与答
29 条回复
bsns
2015-12-10 16:22:28 +08:00
账号别人看见无所谓,密码难道要所有人都可见?
passwd 下的是加密过的,真正的密码放在 shadow 下。
这个问题有点像————“元顺帝为什么叫“顺帝”,没人觉得奇怪吗?”
sun1991
2015-12-10 16:31:54 +08:00
历史原因. 很早以前 password 确实是保存在 passwd 的, 后来安全原因, 改了.
dot
2015-12-10 16:42:02 +08:00
如果是明文密码,那么密码与用户 ID 等信息是存储在 passwd 里面的, shadow 里面是加密过的密码……
ryd994
2015-12-10 16:50:39 +08:00
以前大家觉得密码加密过,放 passwd 也安全
后来世道变了……
话说你为什么不问问神奇海绵, shadow 的历史呢?
gamexg
2015-12-10 16:51:13 +08:00
一些操作要求获得用户 id 、名称等信息,所以 passwd 谁都有权限读取。当时加密后的密码也在里面,造成可以暴力破解。之后决定单独弄一个文件存放密码,只有 root 能访问。
mzer0
2015-12-10 16:52:11 +08:00
passwd 里面没密码吗?那串 ANSI 是什么?
Mark24
2015-12-10 17:51:33 +08:00
@mzer0 passwd 密码位只有一个 x ,密码在 shadow 里
mzer0
2015-12-10 18:21:34 +08:00
@Mark24 但我可以在 passwd 里见到一串 ANSI 串(就是 Aa6BkIGGJK0 这样的)
wsy2220
2015-12-10 18:55:54 +08:00
早期的 unix 是明文放在 passwd 里
sunjourney
2015-12-10 19:18:37 +08:00
以前是放 passwd 里的并且明文,后来换 shadow 并加密了
Comphuse
2015-12-10 19:36:37 +08:00
@mzer0 给个 uname -a 和 cat /etc/*release 输出?
mzer0
2015-12-10 20:00:12 +08:00
@Comphuse 不在电脑前。 Linode & CentOS7
sinxccc
2015-12-10 21:33:57 +08:00
很早的时候把机器的 /etc/passwd 抓下来用 John the ripper 跑一夜就能把密码跑出来…
inmyfree
2015-12-10 21:49:28 +08:00
@sinxccc 现在呢?有办法吗
msg7086
2015-12-10 21:50:35 +08:00
@inmyfree 现在密码只有 root 才能读。
wtbhk
2015-12-10 22:27:52 +08:00
二楼是正解。原来的 passwd 是保存密码的,后来莓保存了。
wtbhk
2015-12-10 22:28:06 +08:00
@wtbhk 莓->没(fix
dndx
2015-12-11 05:01:38 +08:00
因为 passwd 是所有人可读的,后来为了安全起见就把哈希存在只有 root 可读的 shadow 了。
cheng007
2015-12-11 09:17:04 +08:00
历史原因啦,你要是看一下以前的攻击 linux 获得主机账号密码的攻击方式,你就能明白,为嘛不能按照你想的干了
Mark24
2015-12-11 09:17:30 +08:00
@dndx 明白了~
@all 谢谢大家的耐心解答!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/242582

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX