/ etc / passwd vs / usr / bin / passwd

时间:2018-06-18 07:17:12

标签: unix passwd

在我的CentOS 7系统(以及其他Linux版本)中,我注意到有两个passwd文件,/ etc / passwd和/ usr / bin / passwd。前者包含有关用户,组,默认shell等的明文信息,而后者是“passwd”命令调用的二进制(?)文件(由“which passwd”建议)。

这些可能是基本问题,但我在论坛上尝试过手册和解释,虽然没有完全阐明我的心理图片:

1)每个文件的目的是什么,为什么我们两个都有? 2)两个文件是否相关 - / usr / bin / passwd是否是/ etc / passwd的二进制版本,为了提高效率,它会不断更新? 3)对这些文件有什么适当的权限(如果我尝试从该用户的帐户更改非sudoer用户的登录密码,我收到“passwd:身份验证令牌操作错误”,这就是提示这行提问的原因开始)。

感谢阅读,我期待着你的想法!

2 个答案:

答案 0 :(得分:3)

这两个文件不同,用途不同。

  • /etc/passwd是用户数据库(有趣的事实:与其名称相反,它不存储密码 - 这些密码存储在/etc/shadow中(可能以散列形式) - 请参阅man 5 passwd(即passwd(5)),man 5 shadow(即shadow(5))。

  • /usr/bin/passwd是用于修改/etc/passwd/etc/shadow中存储的用户记录的实用程序。请参阅man 1 passwd(即passwd(1)

答案 1 :(得分:1)

  1. /etc/passwdpassword 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
    
  2. /usr/bin/passwd是一个用于更改用户密码的工具, 通常是shadow package的一部分。 具有讽刺意味的是,用户的密码并未存储在/etc/passwd中 但是在今天系统的/etc/shadowpassword 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

    1. 不,/usr/bin/passwd不是/etc/passwd的二进制版本。

    2. 请参阅:

      $ 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
      

      您无法像普通用户那样更改其他用户的密码。