我正在 Debian 5.0 上配置 VsFTPd 2.2.2 服务器。我希望用户登录后只能查看和编辑两个目录:
/home/user/
/var/www/project1/
/var/www/project2/
可能的解决方案
我可以仅在其中一个目录中 Chroot 用户。但我不想使用符号链接或“mount --bind”,因为我有很多用户,而且我不想有非常大的 fstab 文件。此外,用户应该看到“/var/www/project1/”,而不是 /home/user/var-www-project1/。
我可以设置 local_root=/。在这种情况下,用户将看到所有目录(bin dev etc lib lost+found mnt proc sbin sent sys usr boot emul home lib64 media opt root selinux srv tmp var)。这也不能让我满意 :(
答案1
答案2
MAN vsftpd hide_file
此选项可用于设置文件名(和目录名等)的模式,这些文件名应从目录列表中隐藏。尽管被隐藏,但文件/目录等对于知道实际使用什么名称的客户端来说完全可以访问。如果项目的名称包含由 hide_file 给出的字符串,或者它们与 hide_file 指定的正则表达式匹配,则项目将被隐藏。请注意,vsftpd 的正则表达式匹配代码是一个简单的实现,它是完整正则表达式功能的子集。
有关所支持的正则表达式语法的详细信息,请参阅deny_file。
例子:hide_file={*.mp3,.hidden,hide*,h?}
答案3
我也认为除了使用 hide_file 之外没有其他方法可以做到这一点。
(我尝试过的替代方案不是其中之一,因为我不会工作:1.创建一个用作容器的新目录2.在新目录中为每个我想允许访问的目录放置一个符号链接3.将用户监禁在新目录中=>但由于监禁,它不会起作用……:用户无法离开新目录,所以他无法使用符号链接......)