我最近在尝试以某种方式设置 FTP 服务器时遇到了一些问题。我有一个客户端,它将大量数据放在一个文件夹中。然后该客户端有各种目录来组织数据。在(“目录过滤器”的末尾),它们有一个指向海量数据文件夹中文件的符号链接。例如
/lab/directory1/type2/data/owner/lab/bla/bla/file---->/lab/data/filexyz
为了复制和设置“FTP”服务器,我只需创建一个名为的目录/lab/data/
并将所有数据复制到其中。然后我只是复制了符号链接文件夹结构。
然后我设置了 vsftpd。创建一个带有假 bin 的本地用户,并将该用户的主目录设置为/lab
我遇到的问题是,当我chroot_local_user=YES
在配置文件中启用时,用户无法获取服务器提供的文件,550 Failed to open file.
为什么会这样。符号链接指向他们主目录中的文件。但是当我有时,chroot_local_use=NO
用户可以无缝下载文件。有没有办法让用户在被 chroot 监禁时通过他们主目录中的符号链接获取文件?
我一直在为此绞尽脑汁。谢谢!
答案1
符号链接是指向“正确”文件的指针。但如果原始文件在 jail 之外,那么您就无法访问它。这就是 jail 的目的。否则,普通用户可以在 jail 中创建符号链接并/etc/passwd
直接读取它。这是多么大的安全风险啊!
所以 jailed 就是 jailed。硬链接可能可以完成这项工作,因为这是一个“不重复使用大小的复制”。对于 FTP 服务器来说,它就像一个普通文件(带有所有问题)。
答案2
您可以使用 mount 的绑定选项重新挂载其他文件夹,以便 FTP 服务器将文件视为位于网站的根目录中。
您可以像这样/home/shared/files/
安装。/home/website/files/
在中创建挂载点(目录)/home/website
mkdir /home/website/files/
在该挂载点下挂载其他目录:
mount --bind /home/shared/files /home/website/files/
现在看起来这些文件实际上位于下面/home/website/
,因此即使您将用户限制在该网站根目录中,这些文件仍然可用......
摘自这里:
答案3
你应该使用类似mount --bind
答案4
我遇到这个问题是因为我使用了链接目标的绝对路径。
我的命令是:
ln -s /var/www/vhost/myhost.com/typo3_src/typo3_src-8.7.6/ typo3_src
... typo3_src 没有出现在 FTP 客户端中
当我使用相对路径时它起作用了:
ln -s typo3_src/typo3_src-8.7.6/ typo3_src