我们有一个系统,可以登录 FTP 服务器(Linux 上的 vsftpd),将文件上传到它所在的默认目录(它不是 CWD),然后退出。出于超出此问题范围的原因,修改 FTP 客户端应用程序以使其更改目录会很麻烦。
执行上传的用户帐户目前尚未 chroot,但我想 chroot 该帐户以提高安全性。但是,根据 vsftpd,顶级 chroot 目录无法写入。将文件放在子目录中是可以的,但客户端应用程序没有登录后更改目录的选项。
考虑到这一点,是否可以将帐户的初始目录设置为除/
chroot 之外的其他目录?
我曾尝试使用local_root
中的选项vsftpd.conf
,但这只是将用户 chroot 到给定的目录,仍然从中启动它们,/
而不是从类似的子目录中启动/putfileshere/
。
如果有帮助的话,只有一个帐户需要登录到此 FTP 服务器。
答案1
allow_writeable_chroot=YES
我的解决方案是vsftpd.conf
答案2
我在 vsftpd.conf 中遇到了与 local_root= 完全相同的问题。大多数 ftp 都假设 local_root = $home_folder ,但情况并非总是如此。chroot 的目标应该是不允许任何人从被监禁的目录返回一个文件夹,仅此而已。它是树中的根文件夹,而不是着陆目录!应该有在被监禁的树中指定 $home_folder 的选项。考虑 sshd_config 中 sftpd 的这个匹配块:
Match Group mtlsftpprd001_edi-ftp
ChrootDirectory /folder/cifs
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -d %u
KerberosAuthentication yes
与该 AD 组匹配的每个 sftpd 登录现在都将进入 /folder/cifs/$USER 并且只允许 cd 返回一个文件夹。在 filezilla 中,路径将是 /$USER 而不是 / 。vsftpd.conf 可以实现类似功能:
user_sub_token=$USER
local_root=/folder/cifs
home_folder=/folder/cifs/$USER
目前我无法做到这一点,因此我正在寻找在登录时自动运行“CWD /folder/cifs/$USER”的方法。