Using ProFTPD with Solaris 2.5.1 (possibly even other versions):

[Ed: Note, in Solaris 2.6 this is no longer necessary]

Solaris 2.5.1 has an odd problem involving tcp sockets inside of a
chroot()  [as used w/ DefaultRoot and Anonymous logins].  Apparently, due
to the Solaris xti code, socket operations initially attempt to open a few
devices, including /dev/tcp, /dev/udp, /dev/zero and /dev/ticotsord.  This
is most likely caused by the networking libraries, and is completely out
of the control and/or scope of ProFTPD.

Solaris 2.5.1 users wishing to use ProFTPD will have to do something like
the following in their anonymous or otherwise chroot'ed directories:

[ !!NOTE!!  Do not use the major/minor device numbers below verbatim.
  Solaris on different archs will use different major/minors.  Check
  your OS documentation first before doing this. ]

mkdir dev
mknod dev/tcp c 11 42
mknod dev/udp c 11 41
mknod dev/zero c 13 12
mknod dev/ticotsord c 105 1

Solaris 2.5 (and possibly 2.5.1) requires these additional device
nodes to be created in order to avoid a system panic when the
loopback interface is used:

mknod dev/ticlts c 105 2
mknod dev/ticots c 105 0

# the following is necessary to allow proftpd to create a socket
# when in non-low-port mode (such as during passive transfers)
chmod 0666 dev/tcp

Failure to create these files will result in "socket() failed in
inet_create_connection(): No such file or directory" when a user logs in
anonymously and attempts to transfer data of any type (including a simple
directory listing).

If you receive errors such as "socket() failed in
inet_create_connection(): Permission denied", you need to chmod 0666 your
dev/tcp device. 
