zoukankan      html  css  js  c++  java
  • 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 安装

    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

    停止 vsftp 服务

    1. # systemctl stop vsftpd.service

    重启 vsftp 服务

    1. # systemctl restart vsftpd.service

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

    1. # systemctl enable vsftpd.service

    取消随服务器启动

    1. # systemctl disable 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/

     文章关键词: •  • 

     
  • 相关阅读:
    Cron表达式,springboot定时任务
    go 语言中windows Linux 交叉编译
    SSM框架处理跨域问题
    golang gin解决跨域访问
    关于Integer类的值使用==比较
    IoC注解
    spring基础知识
    SQL SERVER大话存储结构(3)_数据行的行结构
    SQL SERVER
    MySQL-记一次备份失败的排查过程
  • 原文地址:https://www.cnblogs.com/jamescr7/p/8268455.html
Copyright © 2011-2022 走看看