1、Centos 下载 vsftpd 并启动:
$ yum install vsftpd
$ service vsftpd start
2、设置开机启动:
$ chkconfig --level 35 vsftpd on
3、修改配置:
$ vim /etc/vsftpd/vsftpd.conf
# 修改或取消注释:
anonymous_enable=NO # 关闭匿名用户登录
local_umask=000 # 生成目录默认777,文件默认666
chroot_local_user=YES # 阻止用户访问上级目录
chroot_list_enable=YES # 阻止用户访问上级目录
allow_writeable_chroot=YES # 允许 chroot 用户具备写权限
4、创建分配的用户
# 创建了用户 user1,并将其目录指向 /home/ftp
$ useradd user1 -s /sbin/nologin -d /home/ftp
# 设置密码(输入两次确认):
$ passwd user1
# 禁止用户的 ssh 登录权限,只允许 FTP 访问(默认就是这种创建方式,该用户无法通过 SFTP 等方式访问上一级目录):
$ usermod -s /sbin/nologin user1
# 如果想恢复,可以设置:
$ usermod -s /bin/bash user1
# 设置目录读写权限(否则无法写入)
$ chmod -R 777 /home/ftp
5、只要第三步启用了 chroot_local_user,就需要创建 chroot_list 文件:
$ vim /etc/vsftpd/chroot_list
# 这里可以填入用户,如 user1。
# 如果不填 user1,那么 user1 登录后直接访问到的目录是 /home/ftp,并且不能访问上一级
# 如果填了 user1,那么 user1 可以访问上一级
# 但不管填不填,都需要有这个文件
# 通过搭配能实现以下几种效果:
# ① 当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
# ② 当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
# ③ 当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
# ④ 当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。
6、重新启动 vsftpd
$ service vsftpd restart
7、也许你会登录失败,比如用 FileZilla 登录不上:
Status: Connection established, waiting for welcome message...
Response: 220 (vsFTPd 3.0.2)
Command: AUTH TLS
Error: Could not read from socket: ETIMEDOUT - Connection attempt timed out
Error: Could not connect to server
这是由于 FTP 服务器不支持 FTP over TLS 的连接方式(FileZilla默认为此模式)。FTP over TLS 是指客户端显式请求(客户端发送 「AUTH TLS」命令)对 FTP 会话加密。虚拟主机服务器会拒绝请求 TLS 的连接。
解决方法即登陆时设置 FTP 客户端不要求会话加密,即采用普通的 FTP 会话方式。