ecryptfs - passwd 实用程序如何更新非管理员密码更改的哈希值?

ecryptfs - How does the passwd utility update the hash for non-admin password changes?

我一直在尝试 ecryptfs 通过 ecryptfs-mount-privateecryptfs-umount-private 手动 mount/unmount 私人商店。当我以配置了 ecryptfs 的用户身份登录时(即:用户名是 bob),它会询问我的 Linux 用户帐户的登录密码为了挂载私人商店。如果我在通过 passwd 命令行实用程序登录系统时更改密码,ecryptfs 需要我的新密码才能安装私有存储。

如果我以 root 用户身份登录(即:系统管理员)并通过 sudo passwd bob 更改 bob 帐户的密码,然后登录进入 Bob 的帐户,当我使用以 root.

登录时设置的新密码时,ecryptfs-mount-private 将失败

我的理解是 ecryptfs 使用用户密码的哈希生成另一个 hash/key 用于 "wrap" 私人存储中的加密文件。但如果是这样,为什么当我以实际用户身份登录时更改密码时 "just work",但当我以 root 身份重置密码时却没有?

到目前为止,我最好的猜测是可能某些设置被传递给 passwd 实用程序,导致它在完成后成为 运行 辅助脚本。有谁知道 ecryptfs 是如何工作的?

谢谢!

当用户更改自己的密码时,将调用 PAM (here or here) 以使用新的用户密码重新包装 eCryptfs 密码,这样您就可以在下次登录时解密您的家。

不知何故,我不知道逐行的确切细节,但我想我在 /etc/pam.d/common-password 中发现了可疑行:

password        optional        pam_ecryptfs.so

如果 root 尝试解包 eCryptfs 密码应该会失败,因为它没有您的用户登录密码。 eCryptfs 还明确告诉您在创建加密主页(可能是任何加密的私人文件夹)时备份实际的 eCryptfs 密码,因为如果 eCryptfs 包装的密码文件出现问题,或者您忘记了登录密码,文件将有效丢失。

如果 root 可以随时通过更改您的登录密码来更改您的 eCryptfs 密码,那么除了 root 之外,您将没有真正的安全保障。