注意:用户被 chrooted 并且他们的local_root
设置为/srv/ftp
。
为什么 vsftpd 强制本地 chroot 用户拥有主目录?如果没有,它将拒绝工作。我在代码中发现了以下内容:
secutil.c:53
/* Always do the chdir() regardless of whether we are chroot()'ing */
这样做的目的是什么?为什么要短暂地切换到 home 然后再切换到local_root
。
答案1
我猜测是因为当用户连接时,从他们的主目录开始会很有用,而不是被放入/
(或其他地方)并且cd
大多数时候都必须进入他们的主目录。
但是主目录应该从中获取/etc/passwd
,因此您可以将其设置为任何您喜欢的目录(不必是/home/<username>
)。您可以创建它/tmp
,或者/
即使您愿意。
答案2
如果 chroot 默认将您置于其中,那它还有什么用呢/
?将用户 chroot 到其主目录的目的是防止他们在其他地方乱逛 - 缺少 homedir 会破坏这一目的,并且极易出错。
答案3
Achroot
只是更改目录树的根文件夹,因此您无法cd
从该点向上移动文件夹。不知何故,开发人员认为$home_folder
应该是chroot
并将两个配置变量打包在一起。对于超过一半的 ftp 用户来说,这可能是答案,但对于许多人来说并非如此。
如果您想/home/$DOMAIN
成为chroot
(local_root
)并/home/$DOMAIN/$USER
成为登陆文件夹怎么办?那么我会被告知我是特殊情况或少数人,无法使用vsftpd
。从道德上讲,local_root
应该只是chroot
,与用户登录时登陆的位置无关。