Ubuntu18.04下vsftpd限制FTP用户仅访问指定目录配置问题
现有chroot限制失效的遗漏配置项
- 缺少
chroot_list_file参数配置:仅开启chroot_list_enable=YES但未指定列表文件路径,vsftpd无法读取规则列表导致chroot逻辑失效,需补充配置chroot_list_file=/etc/vsftpd.chroot_list,该文件每行存储一个用户账号,可根据需求调整例外规则。 - chroot目录权限不符合默认要求:vsftpd默认要求用户的chroot根目录(即用户主目录)不可拥有写入权限,否则会跳过chroot限制。你可选择将主目录权限调整为只读
chmod 555 /var/ftp/ftphtm3,或添加配置allow_writeable_chroot=YES允许chroot根目录可写。 - chroot组合逻辑配置不明确:
chroot_local_user=YES+chroot_list_enable=YES的组合规则为:chroot_list_file内的用户不被chroot限制,其余所有本地用户均被限制在主目录。如果ftphtm3账号被误写入该列表,会直接跳过限制规则。 - 配置修改后未重启服务:所有
/etc/vsftpd.conf的修改都需要执行systemctl restart vsftpd才能生效。
无需目录绑定的实现方案
直接通过调整vsftpd配置和用户主目录即可实现需求,操作步骤如下:
- 清理原有绑定配置:执行
umount /var/ftp/ftphtm3卸载临时绑定,若/etc/fstab中写入了永久绑定规则,同步删除对应行。 - 修改用户主目录为目标路径:执行
usermod -d /var/www/html3 ftphtm3。 - 调整
/etc/vsftpd.conf配置:
# 所有本地用户默认被chroot限制在主目录 chroot_local_user=YES # 无需例外用户的话可直接关闭列表规则 chroot_list_enable=NO # 允许chroot根目录可写(若ftp用户需要对目录有写入权限则添加) allow_writeable_chroot=YES # 配置目录文件默认权限(按需调整,022对应目录755、文件644) local_umask=022 # 开启被动模式避免FileZilla连接异常 pasv_enable=YES pasv_min_port=40000 pasv_max_port=45000
若仅需要限制
ftphtm3单个用户、其余FTP用户不受限制,可将上述前两项配置替换为:chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list执行
echo "ftphtm3" >> /etc/vsftpd.chroot_list,即可仅对列表内的用户生效chroot限制。
- 调整目录权限:确保
ftphtm3用户对/var/www/html3有对应权限,如需读写权限可执行chown -R ftphtm3:ftphtm3 /var/www/html3。 - 重启服务生效:执行
systemctl restart vsftpd。
内容的提问来源于stack exchange,提问作者RandomFellow
相关产品推荐
相关产品推荐

