After the chroot(), calls to socket() are failing. Why?
Answer Posted / chaitanya
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.
| Is This Answer Correct ? | 0 Yes | 0 No |
Post New Answer View All Answers
What's the difference between impact sockets and regular sockets?
What are the pros/cons of select(), non-blocking I/O and SIGIO?
What is sae socket?
What is difference between socket () and serversocket () class?
What is the purpose of socket?
What is socket address with example?
What is the difference between read() and recv()?
What is a socket connection?
How does unix socket work?
How can I write a multi-homed server?
What is difference between socket and websocket?
What is a socket set used for?
Can multiple clients connect to same socket?
What is a socket api?
How many sockets can a port have?