如何保护/etc/passwd和/etc/shadow免受并发访问?我在pwd.h
中看不到任何锁定机制。我看到pwd_mkdb
的手册提到了获取锁,但它只是锁定文件以进行独占访问吗?
如果我要编写一个实用程序来直接修改这些文件,或者通过get/set/endpwent系列函数来修改这些文件,是否有一种锁定这些文件的约定?
发布于 2010-02-26 09:42:03
我认为现在大多数应用程序都在使用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);
到here,它有很多函数前缀‘`pwdb’。谷歌再次显示this,我认为它是passwd的来源。
因此,我认为编辑这些文件是由libpwdb
处理的。当然,我认为包括:
#include <pwdb/pwdb_public.h>
#include <pwdb/pwdb_shadow.h>
但是到目前为止find . -name "*pwdb*" 2>/dev/null
还没有在我的系统上找到任何东西。
https://stackoverflow.com/questions/2338794
复制相似问题