vsftpd 和 chrooted 本地用户的主目录

vsftpd 和 chrooted 本地用户的主目录

注意:用户被 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成为chrootlocal_root)并/home/$DOMAIN/$USER成为登陆文件夹怎么办?那么我会被告知我是特殊情况或少数人,无法使用vsftpd。从道德上讲,local_root应该只是chroot,与用户登录时登陆的位置无关。

相关内容