如何从内部访问 chroot 外部的目录?

Doc*_*Doc 36 chroot debian symlink

我有一个用户被 chroot 到她的主目录,但我希望她也能够管理/var/www. 因此,我做了以下事情:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试/www使用 FileZilla打开时,它返回“没有这样的文件或目录”。我可以看到链接的目录,但我无法访问它。我究竟做错了什么?

Chr*_*own 59

符号链接本质上只是指向另一个文件的指针,您不能指向 chroot 之外的内容,因为它正在寻找具有该名称的文件(/var/www,该文件在 chroot 中不存在)。另一方面,硬链接是指向 inode 的指针。因此,如果您想这样做,您需要通过省略-s. 但是,由于各种原因(主要是那些文件系统是DAG),您不能在 Linux 中硬链接目录(...除外)。

也许最好的方法是使用绑定安装。尝试这个:

mount --bind /var/www /home/username/www
Run Code Online (Sandbox Code Playgroud)

  • @Doc - 在 Linux 中不能硬链接目录。绑定安装应该可以工作。 (7认同)
  • 我已成功安装文件夹,但 chrooted 用户无法看到已安装文件夹内的现有文件。我怎样才能解决这个问题? (3认同)