http://www.perlmonks.org?node_id=414199

mandog has asked for the wisdom of the Perl Monks concerning the following question:

We run Debian Sarge, our current account script:

  1. Uses getpwnam to check if an account exists
  2. If not, adds account info to LDAP
  3. Uses getpwnam to get the $uid and $gid to chown mail spool
  4. While the script is running, the second getpwnam fails. This behavior does not occur with file (/etc/passwd) based accounts.

    The problem also occurs with User::pwent

    If it turns out that this isn't a problem with my understanding, I can think of a few (ugly) ways to work around the problem. If it is a real problem, any thoughts on the best way to report the bug to the OpenLDAP (?) Pam (?) glibc (?) people would be helpful.

    #!/usr/bin/perl -w getpwnam("test") or warn "account doesn't exist yet... (expected)"; # code to add LDAP account here brings out problem # code to add to /etc/passwd account doesn't getpwnam("test") or warn "shouldn't see this but we do\n $!"; (system("chown test.test /tmp/file")==0) or warn "this also fails" # this works but is ugly warn `getent passwd | grep test`,"\n"; # $! eq 'No such file or directory'