Give ftp users access to directories outside their root using symlinks

I tried to give proftpd virtual users access to directories outside their home paths using symlinks I created as root through the console.

/var/ftp/users/test is the home of the user named test.
/var/ftp/files/documents is the directory that holds the documents, and /var/ftp/users/test/documents is the symlink that points to it.

But when an user connects to the FTP and tries to follow the symlink, he only sees this error:

documents: No such file or directory

What am I doing wrong?


Solution 1:

Symlinks are locked into the jail the same way the user is; otherwise it would be possible for the user to break out of the jail with cd documents. (No, root-created symlinks can't be treated specially, for the same reason that cd -P symlink-to-dir; cd .. leaves you in the wrong place; the appearance of it working as you'd expect is an illusion created by the shell.) Use a bind mount instead (mount --bind /var/ftp/files/documents /var/ftp/users/test/documents).