2010-02-26 19 views
4

Comment protéger/etc/passwd et/etc/shadow contre les accès simultanés? Je ne vois aucun mécanisme de verrouillage dans pwd.h. Je vois le manuel pour les mentions pwd_mkdb obtenant un verrou, mais est-ce juste le verrouillage du fichier pour un accès exclusif?Protection de/etc/passwd et/etc/shadow contre les accès simultanés

Existe-t-il une convention pour verrouiller ces fichiers si je devais écrire un utilitaire pour les modifier directement, ou via la famille de fonctions get/set/endpwent?

Répondre

3

Je pense que la plupart des applications utilisent PAM aujourd'hui, n'est-ce pas? http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_ADG.html. Cela dit, vous pouvez regarder la source de `pam_unix.so 'pour voir comment ils le font. Je regardais dans pam_unix_passwd.c et suivi ceci:

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

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

Pour here qui a beaucoup de fonctions préfixées `pwdb ». Googling a encore révélé this qui je pense est la source pour passwd. Par conséquent, je pense que l'édition de ces fichiers est gérée par libpwdb. Certes, je vois comprend à:

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

Mais find . -name "*pwdb*" 2>/dev/null a retroussé rien sur mon système jusqu'à présent.