FTP服务器搭建

前戏

  • FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
  • 常见的FTP服务器:
    • linux
    • Windows

以下以linux系统安装vsftpd为例

环境准备

#关闭防火墙
[root@web02 ~]# systemctl stop firewalld
#查看selinux状态
[root@web02 ~]# getenforce 
#关闭selinux
[root@web02 ~]# setenforce 0

安装

使用rpm包安装ftp

#查看vsftpd软件包是否安装
[root@web02 ~]# rpm -qa|grep vsftpd
#安装
[root@web02 ~]# yum install -y vsftpd
[root@web02 ~]# systemctl status vsftpd

使用系统光盘中的安装包

[root@web02 ~]# mount /dev/cdrom /mnt/
[root@web02 ~]# cd /mnt/Packages/
[root@web02 Packages]# ll|grep vsftpd
-rw-rw-r-- 1 root root   175412 Nov 12  2018 vsftpd-3.0.2-25.el7.x86_64.rpm
[root@web02 Packages]# rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm 

vsftpd配置文件详解

#配置文件
[root@web02 ~]# rpm -ql vsftpd 
/etc/vsftpd/vsftpd.conf		#主配置文件
/var/ftp/pub				#默认情况下,匿名用户根目录

#用户限制相关文件
[root@web02 ~]# ll /etc/vsftpd/
total 24
-rw------- 1 root root  125 Oct 31  2018 ftpusers		#用户黑名单
-rw------- 1 root root  361 Oct 31  2018 user_list		#用户白名单(由配置文件决定)
-rw-r--r-- 1 root root  534 Mar  6 01:06 vsftpd.conf
-rwxr--r-- 1 root root  338 Oct 31  2018 vsftpd_conf_migrate.sh  #vsftpd 操作的一些变量和设置脚本

#user_list: 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP

#vsftpd主配置文件
[root@web02 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES			#允许匿名用户访问
anon_umask=022
anon_upload_enable=YES			#控制是否允许匿名用户上传文件
anon_mkdir_write_enable=YES		#控制是否允许匿名用户创建目录
anon_other_write_enable=YES		#控制匿名用户上传、下载、创建、删除权限
local_enable=YES
write_enable=YES
local_umask=022
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

#限制用户目录切换
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#chroot_local_use=NO

#用户白名单
#userlist_enable=YES
#userlist_deny=NO
#userlist_file=/etc/vsftpd/vsftpd.user_list


#注意,匿名用户只有访问权限
#注意匿名、登录用户的家目录权限为755

创建vsftpd登录用户

[root@web02 ~]# useradd test
[root@web02 ~]# passwd test

权限修改

[root@web02 ~]# chown -R ftp.ftp /var/ftp

客户端连接服务端

命令行连接

[root@web02 ~]# ftp 10.197.184.74
Connected to 10.197.184.74 (10.197.184.74).
220 (vsFTPd 3.0.2)
Name (10.197.184.74:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

Windows图形化连接