在我的CentOS 7系统(和其他Linux版本)中,我注意到有两个passwd文件,/etc/passwd和/usr/bin/passwd。前者包含有关用户、组、默认shell等的明文信息,而后者是二进制(?)"passwd“命令调用的文件(如”哪个passwd“所建议的)。
这些可能是基本的问题,但我在论坛上尝试了一些手册和解释,尽管没有完全阐明我的想法:
1)每个文件的目的是什么,为什么两者都有? 2)这两个文件是相关的- /usr/bin/passwd是一个不断更新的/etc/passwd的二进制版本,是为了提高效率吗? 3)这些文件的适当权限是什么(如果我试图从该用户的帐户中更改非自选用户的登录密码,则会得到"passwd:身份验证令牌操作错误“,这是引发这一问题的原因)。
谢谢你的阅读,我期待着你的想法!
发布于 2018-06-18 07:28:49
这两个文件是不同的,服务于不同的目的。
/etc/passwd是用户数据库(有趣的事实:与其名称相反,它不存储密码(可能以散列形式存储在/etc/shadow中)--参见man 5 passwd (即护照(5))、man 5 shadow (即阴影(5))。/usr/bin/passwd是用来修改存储在/etc/passwd和/etc/shadow中的用户记录的实用工具。见man 1 passwd (即护照(1))发布于 2018-06-18 07:38:10
/etc/passwd是password file,但它不需要包含密码-见下文。它是一个纯文本文件,包含给定系统上的用户和组列表。您可以在man 5 passwd中阅读更多有关它的信息:
/etc/passwd包含每个用户帐户的一行,其中七个字段由冒号(":")分隔。这些字段是:. login·可选加密密码·数值用户ID·数值组ID·用户名或注释字段·user home目录·可选用户命令解释器/usr/bin/passwd是一个用于更改用户密码的实用程序,通常是阴影包的一部分。讽刺的是,并不是说用户的密码不是存储在/etc/passwd中,而是存储在当今系统上的/etc/shadow中,因此password file可能有点误导。来自man 5 passwd
如果密码字段是小写的"x",则加密的密码实际上存储在阴影(5)文件中;必须在/etc/阴影文件中有相应的行,否则用户帐户无效。
普通用户甚至无法读取/etc/shadow,因为它在此文件上没有读取权限,但可以使用passwd实用程序更改密码,因为passwd设置了setuid位:https://unix.stackexchange.com/questions/101467/how-does-the-passwd-command-gain-root-user-permissions。
/usr/bin/passwd不是/etc/passwd的二进制版本。https://stackoverflow.com/questions/50904342
复制相似问题