一、安装
1、YUM安装
[root@localhost ~]# yum install -y vsftpd #过程省略
2、编译安装
在系统安装光盘可找到安装包或网络下载安装包
vsftpd.x86_64.0.3.0.2-22.el7
[root@localhost ~]# tar xvf vsftpd.x86_64.0.3.0.2-22.el7.tar.gz
[root@localhost ~]# cd vsftpd.x86_64.0.3.0.2-22.el7
#在开始编译前需要添加相关用户和目录,用户和目录记录在文件INSTALL中
#添加用户nobody,如果不添加,软件默认用户为ftp
[root@localhost ~]# useradd nobody -M -s /sbin/nologin
#添加目录
[root@localhost ~]# mkdir /var/share/empty
[root@localhost ~]# mkdir /var/ftp
二、配置
yum或rpm安装的,配置文件一般在/etc/vsftpd/vsftpd.conf
相关参数意义:
anonymous_enable=NO #禁止匿名访问
anon_upload_enable=NO #禁止匿名上传文件
anon_mkdir_write_enable=NO #禁止匿名创建文件夹
anon_other_write_enable=NO #禁止匿名其他写操作
chroot_list_enable=NO #禁止用户离开自己的FTP主目录
chroot_local_user=NO #禁止本地用户离开自己的FTP主目录
chroot_list_file=/etc/vsftpd.chroot_list #虚拟用户列表,每行一个用户名
local_enable=YES #允许本地用户访问
local_umask=022 # 设置本地用户所上传文件的默认权限掩码值
write_enable=YES #是否允许写
pam_service_name=vsftpd.vu #权限验证需要的加密文件
guest_enable=YES #开启虚拟用户功能
guest_username=ftp #虚拟用户的宿主用户
virtual_use_local_privs=YES #用户登录后操作主目录和本地用户具有同样的权限
user_config_dir=/etc/vsftpd/vconf #虚拟用户主目录设置文件
listen=yes #是否以独立运行的方式监听服务
listen_address=0.0.0.0 # 设置监听ftp服务的IP地址
listen_port=21 #设置监听FTP服务的端口号
write_enable=yes #启用任何形式的写入权限(如上传,删除文件等)都需要开启此项
download_enable=yes #是否可以下载文件(建立仅限浏览,上传的ftp服务器时可将其设为“no”)
dirmessage_enable=yes #用户切换进入目录时显示.message文件(如果存在)的类容
xferlog_enable=yes #启用xferlog日志,默认记录到/var/log/xferlog
xferlog_std_format=yes #启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_port_20=yes #同意服务器主动模式(从20端口建立数据连接)
pasv_enable=yes #同意被动模式连接
pasv_max_port=24600 #设置用于被动模式的服务器最大端口号
pasv_min_port=24500 #设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd #设置用于用户认证PAM文件位置(/etc/pam.d/目录中对应的文件名)
userlist_enable=yes #是否启用户控制列表
userlist_deny=NO #是否禁用user_list列表文件中的用户账号
userlist_file=/etc/vsftpd/uer_list #//访问控制列表的路径
max_clients=0 #最多同意多少个客户端同是连接(0为不限制)
max_per_ip=0 #对来自同一个ip地址的客户端,最多同意多少个并发连接(0为不限制)
tcp_wrappers=yes #是否启用TCP_Wrappers主机访问控制
开启虚拟用户
guest_enable=YES #启用用户隐射功能
guest_username=ftp #映射的系统用户名字 本地用户
guest_config_dir=/etc/vsftp_user_conf #记录虚拟用配置文件的目录
pam_service_name=ftp.vu #指定 pam认证文件
1、匿名用户访问配置
#过滤注释行显示有效行,查看配置文件
[root@localhost pub]# grep -v ^# /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#默认文件目录赋权给用户ftp,并启动服务
[root@localhost pub]# chown -R ftp.users /var/ftp/pub/
[root@localhost pub]# systemctl restart vsftpd
2、实名访问
#过滤注释行显示有效行
[root@localhost pub]# grep -v ^# /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=vftpuser
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
guest_enable=YES
guest_username=vftpuser
user_config_dir=/etc/vsftpd/vuser_conf
pasv_min_port=61001
pasv_max_port=62000
allow_writeable_chroot=YES
anon_umask=022
#编辑虚拟用户列表
[root@localhost pub]# vim /etc/vsftpd/chroot_list
vftpuser
#安装数据加密库
[root@localhost ~]# yum install db4 db4-utils -y
*如果无法安装可配置epel源
[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm
#设置用户密码数据库
[root@localhost pub]# vim /etc/vsftpd/vuser_passwd.txt
howard
123456
long
123456
[root@localhost vsftpd]#db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
修改认证配置文件
[root@localhost ~]# vim /etc/pam.d/vsftpd
原内容全部注释掉
#系统为32位的
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
#系统为64位的
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
#设置虚拟用户的权限配置文件
[root@localhost ~]# vim /etc/vsftpd/vuser_conf/howard
local_root=/var/ftp/upload
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
[root@localhost ~]# vim /etc/vsftpd/vuser_conf/long (内容同上)
创建虚拟用户的上传文件目录
[root@localhost ~]# mkdir /var/ftp/upload
设置防火墙
打开防火墙设置:
[root@localhost ~]# vi /etc/sysconfig/iptables
注释其他,新加如下
-A INPUT –m state --state NEW –m tcp –p tcp –dport 22 –j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
systemctl restart firewalld.service
使用本地用户登录,限制目录和权限的实例:
一、编辑主服务配置文件vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_list_enable=NO
#chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
user_config_dir=/etc/vsftpd/userconfig
#local_root=/data/ftproot
tcp_wrappers=YES
pasv_enable=YES
pasv_max_port=21000
pasv_min_port=20000
pasv_address=121.201.14.168
二、编辑用户配置文件
mkdir /etc/vsftpd/userconfig
vim /etc/vsftpd/userconfig/usname
local_root=/vsftproot
write_enable=YES
使用虚拟用户配置实例:
一、编辑服务配置文件vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=virtual
local_umask=022
anon_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir
二、编辑用户配置文件
mkdir /etc/vsftpd/vusers_dir
vim /etc/vsftpd/vusers_dir/usname
local_root=/vsftproot
write_enable=YES
原文:http://blog.51cto.com/8982757/2064046