网站首页 » 网站运营 » Linux » Centos 7 FTP(vsftp)服务安装及配置
上一篇:
下一篇:

Centos 7 FTP(vsftp)服务安装及配置

作为前端工程师,要想在中国有一席之地,你不得不作出不可能的努力,把自己变成一个全能的人。你不仅仅要会 HTML、CSS、JavaScript、PhotoShop、Node.js、Angular.js、以及各种前端流行框架 如Boostrap、Kube、UIKIT、amazeui 等等,你还得会配置服务器Linux、Windows。所以下面我们变来聊聊的服务器的配置,在本文中我们要介绍的是在 Centos 7 下安装及配置 FTP 服务。

提示FTP服务的软件有很多,在这里我就以 vsftp 为例。并且是在 centos 7 环境下安装的。

服务器端 FTP

vsftp 安装

# yum install vsftpd

输入上面的安装代码后,不久会有类似is this ok[y/N]:直接输入Y继续就可以了。

vsftp 配置

安装完之后我们就可以进入FTP的配置文件作相关配置了。

# vi /etc/vsftpd/vsftpd.conf

定位到

anonymous_enable=YES

按下键盘i盘进入编辑模式 把YES改成NO

anonymous_enable=NO

这样就可以了。这里的anonymous_enable=NO意思是不允许匿名登录FTP

设置完以后,按下 Esc 退出编辑模式,再按下:wq保存退出。

接下来我们就可以启用这个 vsftp 服务了。

# systemctl start vsftpd.service

停止 vsftp 服务

# systemctl stop vsftpd.service

重启 vsftp 服务

# systemctl restart vsftpd.service

为了避免我们重启服务器后忘记开启FTP服务,我们可以让FTP服务在服务器每次重启后都自动启动。

# systemctl enable vsftpd.service

取消随服务器启动

# systemctl disable vsftpd.service

创建用户

接下来我们就要以创建一个用户,并给这个用户指定一个目录。

# useradd -d /var/www/html/yunkus.com -s /sbin/nologin yunkus

-s:禁止此用户登录SSH的权限
/sbin/nologin:不允许此用户登录系统,但可以登录FTP

设置用户密码

用户创建好后,我们还得给他设置一个登录密码

# passwd yunkus

回车,输入密码即可(需输入两次)
这样就完成了服务器端的FTP服务的配置

客户端 FTP

filezilla 安装

接下来我们得在客户端通过 FTP 软件来访问刚刚为 yunkus 用户创建好的指定目录了。在这里我用 filezilla 作为例子,来给大家讲解下在客户端,也就是我们常常说的本地,怎么往服务器里上传文件。下载链接:https://www.filezilla.cn/download

filezilla 配置

打开filezilla,点击左下角的【新站点】,在右边主机一栏写上你的服务器IP如1.1.1.1,端口号如:21,协议一栏默认就好,加密一栏默认就好。登录类型选择帐号,用户一栏填上刚创的用户名yunkus,密码同样道理,帐号一栏填yunkus,点击【连接】就可以了。如图:

filezilla 连接服务器

FTP 问题整理

但当你开心的等待着光明的到来这时,却被告知无法连接。这又是哪一出呢?莫慌,我们去配置下防火墙就好了。因为防火墙没配置FTP端口号规则。

# vi /etc/sysconfig/iptables

按“i”切换到编辑模式

添加一个端口 21

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

ftp 21 端口

按 ESC 键退出编辑模式,然后输入:wq退出保存。

重启防火墙服务

# systemctl restart iptables.service

查看防火墙服务状态

# systemctl status iptables.service

现在试试,是不是畅通无阻,直通yunkus站点目录呢?祝你好运。可以当你想修改目录下的一些文件,或者在这个目录下进行操作时,你会被告知,操作失败。这是因为我们还没有给yunkus 这个站点目录添加相关的权限。

# chown yunkus /home/yunkus

这行命令的作用就是更改我们刚创建的yunkus目录的所有者。

很奇怪,当我重装Centos 7 系统后,装完vsftp服务,想通过匿名用户连接FTP时,却被告知

状态: 正在连接 114.112.28.91:21…
状态: 连接建立,等待欢迎消息…
状态: 已登录
状态: 读取目录列表…
命令: PWD
响应: 257 “/”
命令: TYPE I
响应: 200 Switching to Binary mode.
命令: PASV
响应: 227 Entering Passive Mode (114,112,28,91,64,179).
命令: LIST
错误: 20 秒后无活动,连接超时
错误: 读取目录列表失败

这是为什么呢?当我把防火关掉之后,再用匿名用户访问时,却又可以。新建一个用户也是如此。只有关闭了防火墙才可以读取目录列表。

更改目录权限为755没用。但当我把ftp的目录放在home目录下时,就不会出现上面“读取目录列表失败”的提示,并且又可以访问目录了。

2.当我修改了/etc/vsftpd/vsftpd.conf 里面的代码去掉 chroot_local_user=YES、chroot_list_enable=YES 和 chroot_list_file=/etc/vsftpd/chroot_list 前面的 # (如下),并在/etc/vsftpd/里新建一个chroot_list文件时

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

又不可以打开了,FTP链接时提示:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

搜索了下这个问题,有这样的解释:

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了

通过如下命令行可以解决

chmod a-w /home/user

user 是你自己创建的目录,如本文例子中是yunkus,这样后你就可能通过FTP链接了,但问题又来了,链接FTP后本该自动跳到/home/yunkus,但却自动跳到根目录下。还有一个问题当执行完个 chmod a-w /home/yunkus 后发现虽然可以列出目录,但操作/home/yunkus时(上传文件,删除文件等等),提示“严重文件传输错误”。当我把、home/yunkus这个目录的权限设置回 755 ,并且开启了限制用户的根目录时

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

又提示:“500 OOPS: vsftpd: refusing to run with writable root inside chroot() 严重错误: 无法连接到服务器”。最后还是找到了解决方法 当运行下面的命令行后,

chmod -R 755 /home/yunkus

再编辑下 /etc/vsftpd/vsftpd.conf 这个文件

vi /etc/vsftpd/vsftpd.conf

在 chroot_local_user=YES 后追加下面一行代码

allow_writeable_chroot=YES

保存退出,重启下vsftpd服务。现在你就可以上传,删除目录下的文件了,也就是说你可以操作这个目录了。让我意外的是在这个过程中也无意中完成了另一个功能,就是用户根目录的配置,这个问题也耗了我不少时间,一直都没得到解决,还真是应了那句话,越折腾越幸运。到这里vsftpd服务就基本搞定了。


更新于:10:44 2017/2/8

最总结

上面说了那么多,可能会让你感觉到有点乱,下面我就把上面一堆东西整理成几句话。

要想实现ftp的文件上传功能,你只需要按照下面的操作步骤就可以了。

1.创建一个目录

mkdir  /home/www/nginx.yunkus.com

2.创建一个FTP用户

useradd -d /home/www/nginx.yunkus.com -s /sbin/nologin yunkusftp

3.更改目录所有者及目录权限

<!--更改目录所有者-->
chown yunkusftp /home/www/nginx.yunkus.com
<!--更改目录权限-->
chmod -R 755 /home/www/nginx.yunkus.com

4.修改vsftpd的配置文件

vim /etc/vsftpd/vsftpd.conf

5.修改内容为

<!-- YES 改成 NO  -->
anonymous_enable=NO

<!-- 去掉前面的#  -->
chroot_local_user=YES

<!--添加下面一行代码-->
allow_writeable_chroot=YES

完成以上步骤你就可以通过FTP来上传文件了。

相关资料

视频教程:安装与配置 FTP 服务器

FileZilla:https://filezilla-project.org/

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/centos7-ftp-service-install-config/

评论2
  1. blackiron 2018年3月7日 at pm2:50 回复

    按您这教程安装配置完了,在终端登录时显示:

    Received message too long 1416128883

    查了很久的资料都没有解决

    • 朝夕熊 2018年3月7日 at pm11:20 回复

      这个问题我在之前安装时没有遇到过,估计是 vsftp 的版本不一样,或者是其它一些原因,这里我也不要断定。不过从提示来看,是超过最大限制,应该不是权限问题。你可以重新安装再试试,或者把 centos 系统重装下,再安装一次 vsftp。之前我在安装其它软件的时候也出现了一些在网上找了很多资料也没解决的错误,我重装了下系统,再安装就可以了,毕竟对系统还不是很熟悉,说不定是之前做了其它的一些配置,影响到这这个也是有可能的。

Leave a Reply

Your email address will not be published. Required fields are marked *

评论 END