C++ 保护/etc/passwd和/etc/shadow不受并发访问
如何保护/etc/passwd和/etc/shadow免受并发访问?我在C++ 保护/etc/passwd和/etc/shadow不受并发访问,c++,c,linux,passwd,C++,C,Linux,Passwd,如何保护/etc/passwd和/etc/shadow免受并发访问?我在pwd.h中没有看到任何锁定机制。我看到pwd_mkdb的手册中提到获得锁,但它只是为了独占访问而锁定文件吗 如果我要编写一个实用程序来直接修改这些文件,或者通过get/set/endpwent函数族修改这些文件,是否有一个锁定这些文件的约定?我认为现在大多数应用程序都使用PAM,不是吗。也就是说,您可以查看“pam_unix.so”的源代码,看看它们是如何做到的。我朝里面看了看,接着说: /* update the pas
pwd.h
中没有看到任何锁定机制。我看到pwd_mkdb
的手册中提到获得锁,但它只是为了独占访问而锁定文件吗
如果我要编写一个实用程序来直接修改这些文件,或者通过get/set/endpwent函数族修改这些文件,是否有一个锁定这些文件的约定?我认为现在大多数应用程序都使用PAM,不是吗。也就是说,您可以查看“pam_unix.so”的源代码,看看它们是如何做到的。我朝里面看了看,接着说:
/* update the password database(s) -- race conditions..? */
retval = unix_update_db(pamh, ctrl, user, pass_old, pass_new);
它有许多前缀为“pwdb”的函数。谷歌再次披露了这一点,我认为这是问题的根源
因此,我认为编辑这些文件是由libpwdb
处理的。当然,我认为包括:
#include <pwdb/pwdb_public.h>
#include <pwdb/pwdb_shadow.h>
#包括
#包括
但是find-名称“*pwdb*”2>/dev/null
到目前为止在我的系统上没有显示任何内容