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