一、vsftp简介
1. 什么是vsftp
vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
2. vsftp特性
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如:
- 非常高的安全性需求
- 带宽限制
- 良好的可伸缩性
- 创建虚拟用户的可能性
- IPv6支持
- 中等偏上的性能
- 分配虚拟 IP 的可能性
- 高速
二、安装vsftp
通过发行版提供的软件包管理工具安装
如果您用的是Fedora 或Redhat 系统,可以用下面的命令在线安装
[root@localhost ~]# yum install vsftpd如果是debian 类系统,可以用apt 来在线安装
[root@localhost ~]# apt-get install vsftpd
如果您是RPM的系统,也可以找到vsftpd-xxxx.rpm 的包来通过rpm命令来安装
[root@localhost ~]# rpm -ivh vsftpd*.rpm
三、Ubuntu下安装vsftp配置
不同系统安装方式不一样,但配置基本相同,这里相关自定义的配置全部放到/etc/vsftpd目录下。后面记录的配置主要是启用虚拟用户访问的配置。
1.安装
和debian类一样,Ubuntu也可以用apt-get来管理安装软件包
[root@localhost ~]# apt-get install vsftpd2.创建ftp系统用户
相当于虚拟用户通过借用本地用户的名去访问ftp服务器
[root@localhost ~]# sudo useradd vsftpd -d /home/vsftpd -s /bin/false [root@localhost ~]# sudo chown vsftpd:vsftpd /home/vsftpd
这里创建了一个不能登陆的本地用户vsftpd,根目录是/home/vsftpd,后面虚拟用户的根目录都是基于这个目录的
3.创建虚拟用户数据库
[root@localhost ~]# sudo touch /etc/vsftpd/vsftp_user.txt [root@localhost ~]# sudo nano /etc/vsftpd/vsftp_user.txtvsftp_user.txt里记录的是虚拟用户的用户名&密码格式如下
用户名1 密码1 用户名2 密码2 用户名3 密码3下面就可以以vsftp_user.txt为模板创建数据库了
[root@localhost ~]# sudo db_load -T -t hash -f /etc/vsftpd/vsftp_user.txt /etc/vsftpd/vsftp_user.db4.配置PAM文件
[root@localhost ~]# sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak [root@localhost ~]# sudo nano /etc/pam.d/vsftpd输入一以下内容:
auth required pam_userdb.so db=/etc/vsftpd/vsftp_user account required pam_userdb.so db=/etc/vsftpd/vsftp_user5.修改vsftp配置文件/etc/vsftpd.conf 主要检查以下配置:
#如果要让访问的用户必须输入用户名和密码的话,这个时候这里就是设置成NO anonymous_enable=NO dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES #是否将所有用户限制在主目录 chroot_local_user=YES #是否启用chroot_list_file限制 chroot_list_enable=YES #限制用户配置文件,这时里面配置的用户可以浏览主目录的上级目录,而不在里面的用户就不行 chroot_list_file=/etc/vsftpd/chroot_list #这个是开启虚拟用户 guest_enable=YES #这个就是我们上面设置的本地用户名 guest_username=vsftpd #虚拟用户配置目录 user_config_dir=/etc/vsftpd/virtual_users #启用pam pam_service_name=vsftpd #是否启用本地用户 local_enable=YES secure_chroot_dir=/var/run/vsftpd6. 编辑单个用户配置文件( user_config_dir配置的目录下) 示例
local_root=/var/ftp/ftp_base write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES说明
local_root=虚拟用户主目录,注意这个主目录不能有写的权限,否则登陆会报错(500 OOPS: vsftpd: refusing to run with writable root inside chroot) write_enable=YES //写权限 anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES