保护 /etc/passwd 和 /etc/shadow 免受并发访问

4

我该如何保护 /etc/passwd 和 /etc/shadow 避免并发访问?在 pwd.h 中没有看到任何锁定机制。我看到 pwd_mkdb 的手册提到了获取锁,但它只是为了独占式访问而锁定文件吗?

如果我要编写一个工具直接修改它们,或通过 get/set/endpwent 函数族进行修改,是否有约定来锁定这些文件?

1个回答

3

我认为现在大多数应用程序都使用PAM,不是吗?http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_ADG.html。话虽如此,您可能需要查看`pam_unix.so'的源代码以了解它们是如何做到的。我查看了pam_unix_passwd.c并按照以下步骤进行:

/* update the password database(s) -- race conditions..? */

retval = unix_update_db(pamh, ctrl, user, pass_old, pass_new);

这里,这里有很多以“pwdb”为前缀的功能。再次搜索发现这个,我认为这是passwd的源代码。

因此,我认为编辑这些文件由libpwdb处理。当然,我看到包括:

#include <pwdb/pwdb_public.h>
#include <pwdb/pwdb_shadow.h>

但是find . -name "*pwdb*" 2>/dev/null在我的系统上目前没有找到任何内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接