CentOS 7 vsftp搭建及配置详细操作步骤

系统版本

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)

本文以root用户操作。

1.安装vsftp

yum install vsftpd 
systemctl enable vsftpd.service

2.建立ftp虚拟宿主账户,并指定家目录

useradd -d /ftp -s /sbin/nologin vuser

注:此用户本身不登录linux系统,只是映射虚拟用户

    修改家目录权限

chmod 755 /ftp chmod -R g+s /ftp

3.配置/etc/vsftpd.conf文件

anonymous_enable=NO 
local_enable=YES 
write_enable=YES 
local_umask=022 
allow_ftpd_full_access=YES 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
anon_other_write_enable=YES 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
ascii_upload_enable=YES 
ascii_download_enable=YES 
#chroot_local_user=YES 
chroot_list_enable=YES 
# (default follows) 
chroot_list_file=/etc/vsftpd/chroot_list 
listen=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
tcp_wrappers=YES 
pasv_enable=YES 
guest_enable=YES 
guest_username=vuser 
user_config_dir=/etc/vsftpd/vconf 
local_root=/ftp 
allow_writeable_chroot=YES

4.建立日志文件

touch /var/log/vsftpd.log 
chown vuser.vuser /var/log/vsftpd.log

5.建立虚拟用户文件

mkdir /etc/vsftpd/vconf/ 
touch /etc/vsftpd/vconf/vir_user

6.建立虚拟用户

vim /etc/vsftpd/vconf/vir_user

例:vir_user文件内容:

test 
123@123

一行用户名,一行密码,增加用户依次按顺序添加用户名和密码。

7.生成数据库文件,并设置该文件的访问权限

db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db 
chmod 600 /etc/vsftpd/vconf/vir_user.db 
chmod 600 /etc/vsftpd/vconf/vir_user

8.修改/etc/pam.d/vsftpd内容

#%PAM-1.0
auth sufficient /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vconf/vir_user 
account sufficient /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vconf/vir_user 
session optional pam_keyinit.so force revoke 
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so 
auth include password-auth 
account include password-auth 
session required pam_loginuid.so 
session include password-auth

9.创建虚拟用户配置文件

注:用户配置文件的名字要和创建的“虚拟用户”名字对应

touch /etc/vsftpd/vconf/test 
vim /etc/vsftpd/vconf/test

例:

local_root=/ftp/test
anonymous_enable=NO 
write_enable=YES 
local_umask=022 
anon_upload_enable=NO 
anon_mkdir_write_enable=YES 
idle_session_timeout=600 
data_connection_timeout=120 
max_clients=0 
max_per_ip=5 
local_max_rate=1048576

10. 建立虚拟用户目录

注:如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下

mkdir /ftp/test 
chown vuser.vuser /ftp/test
chmod 750 /home/test

配置就此完成,如果想增加新的虚拟用户,只要按照上面的第6、7、9步进行就可以了。

另外,新建的linux系统本地用户,也可以设置访问FTP权限,在vsftpd.conf文件里设置local_enable=YES

关于权限设置,可以全局设置,通过vsftpd.conf进行配置,也可以针对个别虚拟用户进行设置,通过相对应的虚拟用户配置文件进行配置。

11. 映射FTP服务器到公网

如果要将内网vsftp服务开放到公网访问,要按如下配置:

1.只能使用pasv模式,指定pasv模式数据传输使用的端口范围

2.配置pasv模式 ,通告外客户端的IP地址,此IP地址应该为NAT映射的公网IP

3.在nat设备上(一般为路由器或者防火墙)映射命令端口和数据端口到内网vsftp服务器,公网映射的端口和内网端口号一致,不能变动。因为vsftp服务器,返回给客户端的数据端口是,自己的真实端口(IP由上面第2条对应的配置指定,但外网端口号不能指定,只能使用自身真实端口号)

4.因为第3条的原因,一般命令端口也会修改,不使用21, 因为外网IP的21端口太小,可能被占用了,而且开放21端口到公网也不安全

对应配置如下,将配置内容添加到配置文件/etc/vsftpd.conf里面。

#set work mode PORT or PASV
#指定命令端口号
listen_port=13021
#指定数据端口范围
pasv_max_port=13999
pasv_min_port=13022
#开启pasv
pasv_enable=YES
#指定pasv模式通告给客户端的IP地址,此处应为外网IP
pasv_address=1.1.1.1

NAT映射配置:  1.1.1.1 13021~13999 映射为内网 X.X.X.X 13021~13999