vsftpd(Very Secure FTP Daemon)是一款流行的Linux系统FTP服务器程序。下面讲解一下vsftpd的安装、配置及使用。
一、vsftpd的安装
1、使用 yum install vsftpd 安装ftp服务器程序
[root@aliyun ~]# yum install vsftpd
2、使用 yum install ftp 安装ftp客户端程序
[root@aliyun ~]# yum install ftp
3、启动 vsftpd
[root@aliyun ~]# service vsftpd start
4、使用 ftp 客户端连接登陆 vsftpd 服务器
[root@aliyun ~]# ftp ftp > open localhost Name (localhost:root): anonymous Password: 230 Login successful ftp > ls drwxr-xr-x 2 0 0 4096 Nov 20 19:22 pub
注:
1)安装 vsftpd 时默认允许匿名登陆,所以在使用客户端连接到 vsftpd 服务器时,可以使用登陆名为 ftp 或 anonymous,口令为空的方式登陆。
2)匿名用户不能离开匿名用户的家目录 /var/ftp/pub,且只能下载,不能上传
3)如果使用service vsftpd start无法启动 vsftpd 服务的话,可以使用 /etc/rc.d/init.d/vsftpd start 来启动
二、vsftpd的配置
1、默认配置详解
# 允许匿名用户登陆,登陆时登陆名为 ftp 或 anonymous,口令为空 anonymous_enable=YES # 允许本地用户登陆,登陆名为本地用户名,口令为本地用户的口令 local_enable=YES # 允许本地用户写拥有FTP服务器文件的写权限 write_enable=YES # 本地用户的文件默认掩码022,文件的默认最大权限为666,也就是上传文件的默认权限为644 local_umask=022 # 激活目录的欢迎信息功能 dirmessage_enable=YES # 启用上传和下载日志功能,该日志文件默认的存放位置为 /var/log/xferlog xferlog_enable=YES # 指定FTP使用20端口进行数据传输(默认FTP工作模式为被动模式,也就是PASV FTP,服务器将使用20端口与客户端进行数据传输) connect_from_port_20=YES # 启用xferlog的标准格式输出 xferlog_std_format=YES # 设置vsftpd服务器不以standalone模式运行 listen=NO # 支持ipv6 listen_ipv6=YES # 设置PAM使用的名称,默认值为 /etc/pam.d/vsftpd pam_service_name=vsftpd # 启动user_list文件(该选项需与userlist_deny选项配合使用,userlist_deny默认为YES,也就是说默认请况下user_list表中的用户将被阻止登陆ftp服务器) userlist_enable=YES # 设置vsftpd与tcp wrapper组合来进行访问控制,YES的情况下,vsftpd将检查/etc/hosts.allow以及/etc/hosts.deny中的设置,来进行主机的访问控制 tcp_wrappers=YES
注:
1)在默认的配置中,我们可以看到,/etc/vsftpd/user_list文件中的用户是无法访问vsftpd服务器的,另外需要特别注意的是 /etc/vsftpd/ftpusers文件中的用户也是无法访问vsftpd服务器的,至于为何要分两个文件,因为user_list指定的是本地用户,而ftpusers指定的是虚拟用户。
三、vsftpd的本地测试用户
1、添加本地ftp测试用户 ftptest,并将该测试用户的家目录设置为 /home/ftptest
[root@aliyun ~]# useradd -d /home/ftptest ftptest
2、为ftptest用户设置密码
[root@aliyun ~]# passwd ftptest
3、限制ftptest使用telnet登陆
[root@aliyun ~]# usermod -s /sbin/nologin ftptest
四、限制本地测试用户只能访问家目录
在 /etc/vsftpd/vsftpd.conf 配置文件中添加如下信息:
# 限制指定用户只能访问家目录 chroot_list_enable=YES # 设置受限制的用户配置文件 chroot_list_file=/etc/vsftpd/chroot_list
新建 chroot_list 文件,并将受限制的用户添加进去
[root@aliyun vsfptd]# touch chroot_list [root@aliyun vsftpd]# echo ftptest >> chroot_list
设置成功后,重启 vsftpd
[root@aliyun vsftpd]# service vsftpd restart
注:
1)当我们限制用户不能跳出其家目录之后,使用该用户登陆FTP时会报错:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
原因是因为,如果该用户被限制在其家目录下,则该用户对家目录不能再拥有写权限,修复这个错误,可以使用
[root@aliyun ~]# chmod 500 /home/ftptest
来去掉ftptest对家目录的写权限,这时可能有人会问,去掉了写权限,那ftptest用户该怎么使用ftp来上传文件呢?其实可以通过在ftptest家目录下新建文件夹,再将文件上传到家目录的子目录下即可
当然还有一种解决方式是在vsftpd.conf中添加一行:
allow_writeable_chroot=YES