【问题标题】:/etc/passwd vs /usr/bin/passwd/etc/passwd 与 /usr/bin/passwd
【发布时间】:2018-06-18 07:17:11
【问题描述】:

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

这些可能是基本问题,但我已经在论坛上尝试了手册和解释,尽管没有完全阐明我的心理图景:

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

感谢您的阅读,期待您的意见!

【问题讨论】:

  • /usr/bin/passwd 是用于设置/更改用户密码的二进制文件。 /etc/passwd 列出用户、他们的主目录、UID、GID 和 shell。密码存储(加密)在 /etc/shadow 中。如果你想了解 /usr/bin/passwd(命令$ passwd)运行$ man passwd

标签: unix passwd


【解决方案1】:

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

  • /etc/passwd 是用户数据库(有趣的事实:与它的名字相反,它不存储密码 - 密码存储在(可能以散列形式)/etc/shadow) - 参见man 5 passwd(即@ 987654321@)、man 5 shadow(即shadow(5))。

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

【讨论】:

  • 不好玩的事实:它不再存储密码,但它曾经存储过。因此,这就是名称的来源。
【解决方案2】:
  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
    

/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

  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
    

    您不能以普通用户的身份更改其他用户的密码。

【讨论】:

  • 感谢您的详细解答!有道理。
  • 虽然这阐明了我对密码管理的理解,但当用户尝试更改他们自己的密码时,我最初是由passwd: Authentication token manipulation error 带到这里的。 \etc\passwd\etc\shadow\usr\bin\passwd 的权限是根据您的指示设置的,所以我怀疑这不是问题。其他地方建议的一个常见问题是系统以只读方式安装,但在我的mount 输出中唯一不是rw 的行是tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)。会不会是这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 2019-05-18
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
相关资源
最近更新 更多