/ etc/passwdと/etc/ shadowを同時アクセスから保護するにはどうすればよいですか?にロック機構がありませんpwd.h
。ロックの取得についてはマニュアルを参照してpwd_mkdb
いますが、排他的アクセスのためにファイルをロックしているだけですか?
これらのファイルを直接変更するユーティリティを作成する場合、またはget / set / endpwentファミリーの関数を使用してこれらのファイルをロックするための規則はありますか?
最近では、ほとんどのアプリケーションが 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
、これまでのところ、私のシステムでは何も見つかりませんでした。