代码之家  ›  专栏  ›  技术社区  ›  indiv Olivier Poulin

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

  •  4
  • indiv Olivier Poulin  · 技术社区  · 14 年前

    如何保护/etc/passwd和/etc/shadow免受并发访问?我看不到任何锁紧装置 pwd.h . 我看了手册 pwd_mkdb 提到获得一个锁,但它只是为独占访问而锁定文件吗?

    如果我要编写一个实用程序来直接修改这些文件,或者通过get/set/endpwent函数族来修改它们,是否有一个锁定这些文件的约定?

    1 回复  |  直到 14 年前
        1
  •  3
  •   user257111user257111    14 年前

    我认为现在大多数应用程序都使用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 到目前为止在我的系统上什么都没有发现。