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 安装

 
 
  1. # yum install vsftpd

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

vsftp 配置

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

 
 
  1. # vi /etc/vsftpd/vsftpd.conf

定位到

 
 
  1. anonymous_enable=YES

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

 
 
  1. anonymous_enable=NO

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

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

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

 
 
  1. # systemctl start vsftpd.service

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

 
 
  1. # systemctl enable vsftpd.service

创建用户

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

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

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

设置用户密码

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

 
 
  1. # 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端口号规则。

 
 
  1. # vi /etc/sysconfig/iptables

按“i”切换到编辑模式

添加一个端口 21

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

ftp 21 端口

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

重启防火墙服务

 
 
  1. # systemctl restart iptables.service

查看防火墙服务状态

 
 
  1. # systemctl status iptables.service

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

 
 
  1. # 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文件时

 
 
  1. chroot_local_user=YES
  2. chroot_list_enable=YES
  3. # (default follows)
  4. chroot_list_file=/etc/vsftpd/chroot_list

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

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

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

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

通过如下命令行可以解决

 
 
  1. chmod a-w /home/user

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

 
 
  1. chroot_local_user=YES
  2. chroot_list_enable=YES
  3. # (default follows)
  4. chroot_list_file=/etc/vsftpd/chroot_list

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

 
 
  1. chmod -R 755 /home/yunkus

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

 
 
  1. vi /etc/vsftpd/vsftpd.conf

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

 
 
  1. allow_writeable_chroot=YES

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


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

最总结

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

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

1.创建一个目录

 
 
  1. mkdir /home/www/nginx.yunkus.com

2.创建一个FTP用户

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

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

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

4.修改vsftpd的配置文件

 
 
  1. vim /etc/vsftpd/vsftpd.conf

5.修改内容为

 
 
  1. <!-- YES 改成 NO -->
  2. anonymous_enable=NO
  3. <!-- 去掉前面的# -->
  4. chroot_local_user=YES
  5. <!--添加下面一行代码-->
  6. allow_writeable_chroot=YES

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

相关资料

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值