如何从chroot外部访问目录?


33

我有一个用户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 *

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

Answers:


52

符号链接本质上只是指向另一个文件的指针,您不能指向chroot之外的东西,因为它正在查找具有该名称的文件(/var/www,在chroot中不存在)。另一方面,硬链接是指向索引节点的指针。因此,如果要这样做,则需要通过省略来使用硬链接-s。但是,由于多种原因,您不能在Linux中硬链接目录(.和以外的目录)(..主要原因是那些文件系统是DAG)。

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

mount --bind /var/www /home/username/www

ln: '/var/www': hard link not allowed for directory
Doc 2012年

7
@Doc-目录不能在Linux中硬链接。绑定安装应该可以工作。
克里斯·

1
我可以将其添加到fstab使其持久化吗?
Kornel

您可以遍历目录并使用硬链接复制树吗?例如,如果父母有/foo/a.txt/foo/bar/b.txt那么您可以做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什么?还是由于某种原因仍然无法正常工作?(显然,这是您要编写脚本来完成的工作,而不是手工完成)。
shadowtalker

1
@Kornel,您可以将none模式与bind选项一起使用:serverfault.com/questions/613179/…–
Yvan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.