实验环境:3.10.0-1062.el7.x86_64 CentOS 7 Windows Server 2012

1.安装ftp软件包,否则运行ftp指令时会出现command not find的问题

[root@localhost gyf]# yum install ftp

2.接下来安装vsftp,这是搭建ftp的关键软件包

[root@localhost gyf]#yum install vsftpd

3.设置ftp服务为开机启动项

[root@localhost gyf]# chkconfig vsftpd on

4.重启服务

[root@localhost gyf]# service vsftpd restart

5.检查服务是否在运行

[root@localhost gyf]# netstat -antup|grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      1102/vsftpd    #这一行是运行结果

6.接下来修改FTP的配置文件

[root@localhost gyf]# vi /etc/vsftpd/vsftpd.conf

根据你的需要决定是否允许匿名用户登录,如果不允许,就把默认的YES改为NO,如下

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
 anonymous_enable=NO

接下来的操作会将登录用户的探索范围限制在其家目录范围内(为了安全,你应当这么做,除非你真的很信任登录者),你需要把下面黑色加粗字体的键值对前面的# 号去掉(默认是有#号的,这里已经将其去掉)。

# You may specify an explicit list of local users to chroot() to their home
 # directory. If chroot_local_user is YES, then this list becomes a list of
 # users to NOT chroot().
 # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
 # the user does not have write access to the top level directory within the
 # chroot)
chroot_local_user=YES
 #chroot_list_enable=YES

7.接下来你需要关闭selinux,把下面加粗字体的值改为disabled

[root@localhost gyf]#vi /etc/selinux/config 
# This file controls the state of SELinux on the system.
 # SELINUX= can take one of these three values:
 #     enforcing - SELinux security policy is enforced.
 #     permissive - SELinux prints warnings instead of enforcing.
 #     disabled - No SELinux policy is loaded.
SELINUX=disabled
 # SELINUXTYPE= can take one of three values:
 #     targeted - Targeted processes are protected,
 #     minimum - Modification of targeted policy. Only selected processes are protected.
 #     mls - Multi Level Security protection.
 SELINUXTYPE=targeted

9.重启一下你的电脑吧

10.现在使用ipconfig命令查看一下你的计算机IP地址,并记好

11.运行ftp://IP地址

[root@localhost gyf]# ftp 192.168.50.134
 Connected to 192.168.50.134 (192.168.50.134).
 220 (vsFTPd 3.0.2)
 Name (192.168.50.134:root): gyf
 331 Please specify the password.
 Password:


500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
ftp> ^C
ftp> ^C
ftp> ^C
ftp> exit

12.发现错了吧,不要慌,这是因为你登录的用户的家目录权限问题。

补充说明:

从2.3.5之后,vsftpd软件增强了安全检查,如果用户被限定在了其主目录下(前面第6步我们干了这件事),则该用户的主目录不能再具有写权限了!

如果检查发现还有写权限,就会报该错误。 

要解决这个错误,用命令chmod a-w /home/user除去用户主目录的写权限。

这里的指令当然是:chmod a-w /home/gyf   (这句话还是不要执行了,因为会引起循环登录问题)

现在再运行[root@localhost gyf]# ftp 192.168.50.134,结果如下:

Connected to 192.168.50.134 (192.168.50.134).
 220 (vsFTPd 3.0.2)
 Name (192.168.50.134:root): gyf
 331 Please specify the password.
 Password:
 230 Login successful.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> ls
 227 Entering Passive Mode (192,168,50,134,128,196).
 150 Here comes the directory listing.
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Desktop
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Documents
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Downloads
 drwxrwxr-x    2 1000     1000            6 Mar 11 22:20 Learn
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Music
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Pictures
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Public
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Templates
 drwxr-xr-x    2 1000     1000            6 Mar 11 21:11 Videos
 226 Directory send OK.
 ftp> exit
 221 Goodbye.

可以看到家目录都被清晰的展示出来

你也可以使用浏览器登录FTP,在地址栏里填写ftp://192.168.50.134

然后在弹出的页面里填写登录名密码即可,如下:

centos7中如何配置ftp服务器 centos7搭建ftp服务_主目录

13.我们架设服务器当然是为了让别人访问的,现在为了实现此目标,需要关闭CentOS7的防火墙。

[root@localhost gyf]# systemctl stop firewalld.service 

现在,打开其他计算机来测试一下:以Windows为例:如下图

centos7中如何配置ftp服务器 centos7搭建ftp服务_重启_02

OK,说明成功了。