getpwnam issue

chadmiko nginx-forum at nginx.us
Tue Jan 4 23:43:55 MSK 2011


Hello all, 

I am testing a chroot'ed nginx setup on Debian Lenny and am receiving
the error:  `getpwnam("www-data") failed` when I try to start nginx.  My
search to find a possible solution have so far been fruitless but I am
hoping someone smarter than I could offer some advice.

I've setup the "jail" in /chroot/nginx, created the relevant directory
structure (/dev/, /etc, /usr, /var, etc.).  Then I copied files that
"ldd `which nginx`" showed as linked to the relevant directories, and
also copied what I believe are the necessary /etc/* files to
/chroot/nginx/etc/.  So my directory structure is basically as follows:

/chroot/nginx (base chroot directory)
                /etc
                     passwd, shadow, group, hosts, nsswitch.conf,
resolv.conf
                     /nginx
                          nginx.conf, 
                          /sites-{available, enabled}
                /usr
                     /sbin
                           nginx
                     /lib
                          *(some shared library files here)
                /lib
                     libnss_dns* files, libnss_compat* files,
libnss_files*, and some other shared library files here
                /var
                /dev
                /tmp

(that's a non-exhaustive overview, but is hopefullly enough to diagnose
the problem)

I know that it's not a getpwnam() issue, as I found a forum discussion
which involves troubleshooting the getpwnam() function with a simple C
program to ensure that getpwnam() is indeed working properly.  I've
tested this and it works as expected in a non-chroot setting 
(discussion is here, it's in Russian, so you may need to use Google
Translate: 
http://forum.nginx.org/read.php?21,128545,129156#msg-129156). 

I am using the start-stop-daemon to manage nginx with a script similar
to this: 
http://snippets.aktagon.com/snippets/155-nginx-startup-script-for-Debian.
 So to start nginx I run:

     #   start-stop-daemon --start --pidfile /var/run/nginx/nginx.pid 
--exec /usr/sbin/nginx --chroot /chroot/nginx

And this is what throws the error.  I think that it's really an issue of
having my paths or permissions wrong such that getpwnam() cannot
read/find the passwd file, but my attempts to change permissions,
owners, and paths have not been successful. Any advice or suggestions
would be appreciated!  

Thanks,

Chad

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,163489,163489#msg-163489




More information about the nginx mailing list