(Courriels de diversion: <uniquement@differenciions-framboisier.com> <grappilles@tracta-infeste.com> <cracherez@repliee-carenees.com> <dynamisait@dominerent-feutrant.com> <delestant@distillerions-atermoiement.com> <moqueront@nomme-ethylique.com> <destines@presentez-orthographieraient.com> <interviendrions@abuserais-cingleront.com> <desires@pauperisons-renseignant.com> <reelirions@ressassait-ânonnent.com> )


> > > > >  "tb" == thierry  <thierry@123immo.com> writes:
  tb> Je suis en train d'ecrire un programme analogue a "adduser", et je
  tb> suis sur le probleme de l'attribution du UID. Comment en detecter
  tb> un disponible sans risquer de 'race-condition' si deux instances
  tb> de mon prog s'executent simultanement ? Un infamous "Seq Scan" du
  tb> fichier /etc/password ne me garantie que des soucis potentiels...
  tb> Donc, premiere question: existe-t-il une API pour cette operation,
  tb> man 'putpwent' n'est pas tres explicite ?

il est clair qu'il faut locker /etc/passwd (ou le cas échéant
/etc/shadow). Avec la glibc et les dérivés SRV4 voir les fonctions
lckpwdf(3) et ulckpwdf(3) déclarés dans <shadow.h> ; sinon il faut
voir quel est le type de lockage utilisé par passwd, adduser et
compagnie -- probablement flock ou lockf -- et faire pareil.

Vu les problèmes de politique d'allocation d'UID et la gestion
d'authentification shadows/NIS/PAM, je te déconseille de tripoter ces
fichiers système directement; mieux vaut utiliser les utilitaires
existants, éventuellement en les scriptant via expect ou Expect.pm.

 
  tb> Deuxieme question subsidaire, opensource, c'est bien, mais comment
  tb> retrouver les sources de la commande machin ?-)

avec Debian c'est très simple:

   ~$ dpkg -S `which passwd`
   passwd: /usr/bin/passwd
   ~$ dpkg -s passwd | grep Section:
   Section: base
   ~$ lynx 'http://www.fr.debian.org/Packages/stable/base/passwd.html'

et j'ai un lien vers le source d'origine. Avec les distributions
inférieures c'est peut-être moins évident :-)

-- 
DISCLAIMER: this message is the author's personal opinion and does not
constitute the support, opinion, or policy of the LAAS-CNRS, or of the
little green men that have been following him all day.

---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://savage.iut-blagnac.fr/>