用简单,清晰明了的方法在CentOS7 Linux系统上安装ftp,配置ftp,最后搭建ftp

操作环境:(访问者:win10,ftp服务器:centos7)
如果觉得之前的配置自己改乱了,可以通过以下方法,查找,卸载,并重新安装vsftpd:

[[email protected] ~]# rpm -aq | grep vsftpd #查找安装的vsftpd
vsftpd-3.0.2-25.el7.x86_64
[[email protected] ~]# service vsftpd stop #停止服务
[[email protected] ~]# rpm -e vsftpd-3.0.2-25.el7.x86_64 #卸载
警告:/etc/vsftpd/vsftpd.conf 已另存为 /etc/vsftpd/vsftpd.conf.rpmsave
警告:/etc/vsftpd/user_list 已另存为 /etc/vsftpd/user_list.rpmsave
警告:/etc/vsftpd/ftpusers 已另存为 /etc/vsftpd/ftpusers.rpmsave
[[email protected] ~]#    #成功删除

安装前工作

#首先重点
如果是VMware上的虚拟机可以暂时忽略
如果是连接其它主机(尤其是云服务器)则先干一件事
windows操作系统打开控制面板–>网络和Internet选项–>Internet选项–>Internet选项–>高级,把使用被动FTP这个选项的√去掉,不去掉是访问不了服务器ftp的,除非服务器使用主动ftp。
用简单,清晰明了的方法在CentOS7 Linux系统上安装ftp,配置ftp,最后搭建ftp
关闭Selinux

vim /etc/sysconfig/selinux

把配置文件改为SELINUX=disabled
用简单,清晰明了的方法在CentOS7 Linux系统上安装ftp,配置ftp,最后搭建ftp
防火墙开放相应的端口号
firewall防火墙方法:

[[email protected] vsftpd]# firewall-cmd --state   #查看运行状态
running
[[email protected] vsftpd]# firewall-cmd --permanent --add-port=21/tcp  #开放21端口
success
[[email protected] vsftpd]# firewall-cmd --reload  #重启防火墙必须
success

关于firewall防火墙的更多知识和iptables防火墙的开启关闭可以参考:
https://blog.csdn.net/bbwangj/article/details/74502967 (很全面)

正式搭建FTP服务

安装vsftpd
root用户才能安装,

yum -y install vsftpd

安装成功:
用简单,清晰明了的方法在CentOS7 Linux系统上安装ftp,配置ftp,最后搭建ftp
匿名用户登录:
1.更改/var/ftp/pub权限

chmod o+w /var/ftp/pub

如图即为更改成功:
用简单,清晰明了的方法在CentOS7 Linux系统上安装ftp,配置ftp,最后搭建ftp
2.更改/etc/vsftpd/vsftpd.conf

[[email protected] ~]# cd /etc/vsftpd
[[email protected] vsftpd]# vim vsftpd.conf

把下面两个前面的#去掉

anon_upload_enable=YES     #是否允许用户上传文件
anon_mkdir_write_enable=YES    #是否允许用户创建和上传目录

修改完后的配置如下:

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

3.启动vsftpd服务

[[email protected] vsftpd]# service vsftpd start
Redirecting to /bin/systemctl start vsftpd.service

现在就可以以匿名用户的身份进行访问了,可以上传文件,上传目录,创建目录。如果你不能进行这些操作,则可能是你之前自己把/var/ftp目录的权限改为了777,可以通过chmod 755 /var/ftp更改回来,宿主目录不能为777

重点
如果你使用的是云服务器,则需要在云服务器开放相关的端口访问权限,比如阿里云,需要选择添加安全组规则,才可以连接服务器。
用简单,清晰明了的方法在CentOS7 Linux系统上安装ftp,配置ftp,最后搭建ftp
不过此时,匿名用户并不能删除和下载文件,可以根据需要继续在刚刚的配置的文件里面加入以下语句

anon_other_write_enable=YES

本地用户登录
系统默认只能匿名用户登录,本地用户登录会出错。

1.创建ftp用户,如果想用已有用户登录可以不创建

[[email protected] vsftpd]# useradd ftpuser
[[email protected] vsftpd]# passwd ftpuser
更改用户 ftpuser 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

限制用户只能登录ftp,不能用来登录系统,如果你想用来登录系统则不改

[[email protected] ~]# usermod -s /sbin/nologin ftpuser  #更改shell
[[email protected] ~]# su ftpuser    #尝试切换为ftpuser
This account is currently not available.    #切换失败,则更改成功

又是重点了
查看配置文件/etc/shells,看看有没有 /sbin/nogin,没有就添加

[[email protected] vsftpd]# vim /etc/shells

添加后的结果:

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/sbin/nologin
~                                                                                      
~                                                                                      
~                                                                                      
~                                                                                      
~              

2.修改vsftpd.conf文件

[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf

更改的地方有:

anonymous_enable=NO  #不允许匿名用户登录
userlist_deny=NO    #NO:本地用户登录后可以进行操作,如果anonymous_enable=YES,则匿名用户可以登录但不能进行操作,包括读,YES:本地用户可以登录,但不可以进行操作,默认为YES,这个配置文件没有,要自己添加

修改完后配置如下:

anonymous_enable=NO
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
userlist_deny=NO

3.修改user_list文件,本地用户需要添加到这个文件里面才能进行登录

[[email protected] vsftpd]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim user_list

把刚刚创建的ftpuser添加到文件中,添加后如下

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
ftpuser

同级目录下还有个ftpuser文件,添加到这里面的用户是登录不了ftp的,比如root,防止权限过大误操作。
4.重启vsftpd,每次更改完配置必须重启才能生效,

[[email protected] vsftpd]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service

5.使用本地用户ftpuser进行登录,登录后的默认目录为家目录,如有需要可以进行更改,包括限制在ftp目录下这里不多说了。具体参考:
https://blog.csdn.net/u014410695/article/details/72765702

小结: 好了,整个过程大概就这样了,虽然看起来不是很多,但是却整整花了我3天左右的时间才搞懂,毕竟我比较笨,又看不懂英语,在网上确实看到了很多很多的教程,可是让我非常头疼的是,教程虽然多,可是很多都有这样那样的问题,自己也尝试了很多次,但是都以失败告终。搭建FTP没有我想象中的那么容易,在这过程中涉及到防火墙,selinux,尤其是云服务器本身还要配置安全规则,然后不仅涉及到服务器本身,还涉及到客户端的设置。在配置ftp文件的信息时,又涉及到各种权限的问题。真的说多了都是泪,搞这个ftp真的搞的我很难受。这个文档我从早上搞到下午才搞定的,查了不少资料,做了不少实验才完成的,按照这个方法没问题的话应该是可以成功搭建ftp的,但是不同的操作系统,不同的vsftpd版本或许又有点不同,这也是需要大家多查点资料了。

最后,希望能帮到大家,我也从别人的教程受益匪浅,正是大家无私的奉献,才让初学者节约了很多的时间,减少了很多失败的次数。