执行sudo vim /etc/vsftpd.conf可以看到以下3行被注释:
#chroot_local_user=YES #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd.chroot_list解了这3行的注释,我们看到有指定一个用户列表“vsftpd.chroot_list”,但是这个文件初始是不存在的,我们需要自己建立。
如果是两个YES(就上面那样),那么是指,限制所有用户,开放(列表中)特定,限制一切用户,只解禁 /etc/vsftpd.chroot_list 的用户,也即是只有这个列表中的用户可以访问所有文件,不在列表的只能访问指定目录。
如果是一个NO和一个YES,那就是开放所有,限制特定,可指定一组用户限制,即列表中的用户受限。
sudo vim /etc/vsftpd.chroot_list一行一个用户名,进行添加,然后保存退出,比如添加了我们刚才的ftptest用户,并且设置两个YES。
这时候你再去连接ftp时,你会发现你居然能访问所有目录了,为了验证有效性,你可以断开连接,再去设置chroot_local_user为NO时,你会发现,你又只能访问ftp目录了。
这就是chroot的作用。
附. 通过FTP连接AWS EC2因为我用的测试服务器是AWS EC2,所有这里也提一下当服务器端通过终端配置好vsftpd后如何连接AWS。
打开AWS的EC2控制台:
添加自定义规则,1024-1048端口这里的配置要和vsftpd.conf文件的被动模式配置端口一致,然后还要打开20-21端口,否则就没法进行ftp连接了。
配置好后就可以进行ftp连接了,如果是SFTP,则需要添加ssh密钥。
vsftpd详细说明参见这里
Ubuntu实用简单的FTP架设
Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置
RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例
openSUSE 13.2/13.1 下安装配置 FTP服务器 vsftpd