After the chroot(), calls to socket() are failing. Why?
Unix Socket FAQ for Network programming
(Continued from previous question...)
After the chroot(), calls to socket() are failing. Why?
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; 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.
(Continued on next question...)
Other Interview Questions
|