After the chroot(), calls to socket() are failing. Why?
From Andrew Gierth (andrew@erlenstar.demon.co.uk): On systems where sockets are implemented on top of Streams (e.g. all SysV-based systems, presumably including Solaris), the socket() function will actually be opening certain special files in /dev. You will need to create a /dev directory under your fake root and populate it with the required device nodes (only). Your system documentation may or may not specify exactly which device nodes are required; I can’t help you there (sorry). (Editors note: Adrian Hall (adrian@hottub.org) suggested checking the man page for ftpd, which should list the files you need to copy and devices you need to create in the chroot’d environment.