安装与启动
# 安装 vsftpd
yum install -y vsftpd
# 设置开机自启动
systemctl enable vsftpd.service
# 启停
service vsftpd start
service vsftpd restart
service vsftpd stop
创建用户并锁定目录
# useradd -d 目录 -s /sbin/nologin 用户
useradd -d /home/ftp/ -s /sbin/nologin ftp
# 设置密码
passwd ftp
修改配置文件
编辑 /etc/vsftpd/vsftpd.conf,去掉以下三项的注释:
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
目录权限
chown -R ftp:ftp /home/ftp/
chmod 755 -R /home/ftp/
重启并测试
service vsftpd restart
ftp 127.0.0.1
常见问题
提示「文件和主目录已经存在」——找到信箱文件并删除:
find / -name "*ftp"
rm -rf /var/spool/mail/ftp
提示「用户已存在」:
userdel ftp
登录报 500 OOPS: cannot change directory——检查目标目录及其各级父目录的权限。
登录报 530 Login incorrect——检查 /etc/shells 是否包含 /sbin/nologin:
vim /etc/shells
/sbin/nologin
chroot 参数组合对照表
chroot_local_user=YES | chroot_local_user=NO | |
|---|---|---|
chroot_list_enable=YES | 1. 所有用户都被限制在其主目录下 2. chroot_list_file 中的用户作为「例外」,不受限制 | 1. 所有用户都不被限制在主目录 2. chroot_list_file 中的用户作为「例外」,受到限制 |
chroot_list_enable=NO | 1. 所有用户都被限制在其主目录下 2. 不使用例外列表,没有任何例外 | 1. 所有用户都不被限制在主目录 2. 不使用例外列表,没有任何例外 |