我需要建立一个 FTP 服务器,用于将软件包的各个版本分发给多个用户帐户。
为了避免将文件复制到每个用户的 ftp 主文件夹,我想使用类似这样的结构通过符号链接设置“共享文件环境”:
/
...
+-- srv
+-- ftp
+-- data
+-- V1
+-- Latest -> /srv/ftp/data/V1/V1.3
+-- V1.1
+-- V1.2
+-- V1.3
+-- V2
+-- Latest -> /srv/ftp/data/V2/V2.2
+-- V2.1
+-- V2.2
+-- V3
+-- Latest -> /srv/ftp/data/V3/V3.1
+-- V3.1
+-- users
+-- user1
+-- V3 -> /srv/ftp/data/V3/Latest
+-- user2
+-- V2 -> /srv/ftp/data/V2/Latest
+-- user3
每个版本都是一个包含多个文件和子文件夹的文件夹。
我正在使用带有 vsftpd 的 Linux 机器(CentOS 7);当我尝试限制用户访问他的主文件夹时出现了问题;服务器不允许跟踪用户文件夹之外的链接。
例如,我希望用户 1 仅看到 V3 文件夹及其内容(带有子文件夹)
所以问题是:这是正确的方法吗?如果是,如何使其发挥作用?如果不是,对于这样的事情,推荐的方法是什么?
答案1
一般考虑:停止使用传统的 FTP 协议进行内容分发。
作为使用符号链接的替代方法,您可以使用“绑定”挂载将文件系统的一部分复制到其他地方,例如用户个人目录层次结构中。绑定挂载不应干扰 chroot 限制策略。
下列语法是等效的:
mount --bind /srv/ftp/data/V3/Latest /srv/ftp/users/user1/V3
mount -o bind srv/ftp/data/V2/Latest /srv/ftp//users/user2/V2
创建相关条目/etc/fstab
以使其在重启后仍然存在。