在我的CentOS 7系统(以及其他Linux版本)中,我注意到有两个passwd文件,/ etc / passwd和/ usr / bin / passwd。前者包含有关用户,组,默认shell等的明文信息,而后者是“passwd”命令调用的二进制(?)文件(由“which passwd”建议)。
这些可能是基本问题,但我在论坛上尝试过手册和解释,虽然没有完全阐明我的心理图片:
1)每个文件的目的是什么,为什么我们两个都有? 2)两个文件是否相关 - / usr / bin / passwd是否是/ etc / passwd的二进制版本,为了提高效率,它会不断更新? 3)对这些文件有什么适当的权限(如果我尝试从该用户的帐户更改非sudoer用户的登录密码,我收到“passwd:身份验证令牌操作错误”,这就是提示这行提问的原因开始)。
感谢阅读,我期待着你的想法!
答案 0 :(得分:3)
这两个文件不同,用途不同。
答案 1 :(得分:1)
/etc/passwd
是password file
但不是必须的
包含密码 - 见下文。它是包含的纯文本文件
给定系统上的用户和组列表。你可以阅读更多相关信息
它在man 5 passwd
:
/etc/passwd contains one line for each user account, with seven fields delimited
by colons (":"). These fields are:
· login name
· optional encrypted password
· numerical user ID
· numerical group ID
· user name or comment field
· user home directory
· optional user command interpreter
/usr/bin/passwd
是一个用于更改用户密码的工具,
通常是shadow
package的一部分。
具有讽刺意味的是,用户的密码并未存储在/etc/passwd
中
但是在今天系统的/etc/shadow
中password file
可能是一个
有点误导。来自man 5 passwd
:
如果密码字段是小写的“x”,则加密密码 实际上存储在shadow(5)文件中;必须有一个 / etc / shadow文件中的相应行,或者用户帐户 无效。
普通用户甚至无法阅读/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
的二进制版本。
请参阅:
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1335 Jul 14 2016 /etc/passwd
$ ls -l /usr/bin/passwd
-rws--x--x 1 root root 77689 Jul 2 2014 /usr/bin/passwd
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 719 Aug 5 2016 /etc/shadow
您无法像普通用户那样更改其他用户的密码。