After the chroot(), calls to socket() are failing
From Andrew Gierth (email@example.com):
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 (firstname.lastname@example.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.)
A less-obvious issue with chroot() is if you call syslog(), as many
daemons do; syslog() opens (depending on the system) either a UDP
socket, a FIFO or a Unix-domain socket. So if you use it after a
chroot() call, make sure that you call openlog() *before* the chroot.