33

I have a user which is chrooted to her home directory, but I want her to also be able to manage files within /var/www. As such, I did the following:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

However, when I try to open /www with FileZilla it returns "no such file or directory". I can see the linked directory, but I can't access it. What am I doing wrong?

52

Symlinks are essentially just pointers to another file, you can't point to something outside the chroot because it is looking for a file with that name (/var/www, which doesn't exist inside the chroot). Hardlinks on the other hand are pointers to the inode. As such, if you want to do that, you need to use a hard link by omitting -s. However, you cannot hard link a directory (other than . and ..) in Linux for a variety of reasons (the main one being that those filesystems are a DAG).

Perhaps the best way would be to use a bind mount. Try this:

mount --bind /var/www /home/username/www
  • ln: '/var/www': hard link not allowed for directory – Doc Nov 14 '12 at 15:53
  • 7
    @Doc - Directories cannot be hard linked in Linux. A bind mount should work. – Chris Down Nov 14 '12 at 16:03
  • 1
    Can I add this to fstab to make it persistent? – Kornel Aug 31 '17 at 14:43
  • Could you recurse through directories and replicate the tree with hard links? E.g. if the parent has /foo/a.txt and /foo/bar/b.txt then you could do mkdir -p ./chroot/foo/; mkdir -p ./chroot/foo/bar; ln /foo/a.txt ./chroot/foo/a.txt; ln /foo/bar/b.txt ./chroot/foo/bar/b.txt? Or would that still not work for some reason? (Obviously this is something you'd write a script to do, instead of doing by hand). – shadowtalker Nov 2 '17 at 20:39
  • 1
    @Kornel you can use the none mode along with bind option: serverfault.com/questions/613179/… – Yvan Feb 8 '18 at 16:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.