前言

  今天被经理要求搭建ftp服务器,然后就去网上搜索了一下教程。搭建成功后(遇到的坑不少)特此记录一下。因为是为了记录一下整个操作流程以防以后使用所以比较啰嗦。

目录

  1、安装vsftpd

  2、创建用户和用户组

3、修改配置文件及创建例外用户文件chroot_list

4、设置防火墙端口开放和服务器端口开放

安装vsftpd

 使用yum指令进行安装(安装这个东西还真的是简单)

yum install vsftpd* -y

 然后可以使用以下命令开始,停止,或重启

/bin/systemctl start vsftpd.service #启动vsftpd
/bin/systemctl stop vsftpd.service  #停止vsftpd
/bin/systemctl restart vsftpd.service  #重启vsftpd

然后可以使用以下指令查看启动状态

systemctl status vsftpd

执行正常结果如下所示:

创建用户和用户组

新创建一个用户和用户组,因为需要我们要对用户限制访问空间和位置,这些会在下一节讲到。

创建用户组,其实从最终结果来说我没有用到用户组上的东西,但是还是跟着教程创建了一个用户组,如下所示:

groupadd ftpgroups #创建一个名为ftpgroups的用户组

可以一步到位的创建用户同时分配用户根目录和用户组如下所示,其中/home/test目录不存在需要自己创建:

useradd -d /home/test -g ftpgroups test

当然会有麻烦一些的方法,首先创建用户然后给用户分配组别。设置密码passwd+用户名这个我就不解释了。ok如果你不限制用户的权限访问目录什么的到这里应该就能使用本机访问了,如果想要远程访问需要设置一些其他东西。不过接下来因为我们需要限制用户的访问目录所以我们先讲一下如果限制用户的访问目录。

修改配置文件及创建例外用户文件chroot_list

  首先找到vsft的配置文件  /etc/vsftpd/vsftpd.conf,在配置文件中我们找到如下三个属性

chroot_local_user=YES   #是否将所有用户限定在主目录内
chroot_list_enable=YES #是否启动限制用户名单
chroot_list_file=/etc/vsftpd/chroot_list #是否限制在目录下的用户名单,没有的话需要自己创建
allow_writeable_chroot=YES #报503错误的时候添加

  上面三个属性在限制用户的访问权限中是相当重要的,其中chroot_list_file属性中的作用还取决于chroot_local_user和chroot_list_enable的组合,具体可以参考这个博客:https://blog.csdn.net/bluishglc/article/details/42398811,我同时从上面摘抄下来一段话如下所示:

  

chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

ok,那么从上面的解释我们就可以将chroot_local_user设定为NO,将chroot_list_enable设置为yes并在chroot_list中添加需要限制的用户就可以了。接下来设置防火墙什么的就是问题最多的地方了。

设置防火墙端口开放和服务器端口开放

  按照上面的基本没有什么问题就可以直接使用本地ftp进行连接了然后就是远程连接。远程连接的话一般都涉及到防火墙、服务商安全组这两个部分。So,我们先说一下防火墙,centos7的防火墙默认是firewalld,所以你需要先在防火墙上打开你的端口,还需要你添加ftp服务,可以参考博客:https://blog.csdn.net/u011383596/article/details/80869114,操作步骤就是添加服务,重启防火墙这里我把命令给粘贴了过来:

firewall-cmd --permanent --add-service = ftp  #添加服务
systemctl restart firewalld.service #重启防火墙

  接下来如果你的服务器是云服务器列如阿里云的话你需要设置一下你的安全组,将端口21添加进去。

这些都操作完的话可以用telnet ip port来测试一下时候能够访问到,如果访问到基本就大功告成了。然后可以用一些工具进行连接如果找不到目录的话需要修改为主动连接。这些我就不废话了。

结束语

  其实整个流程是不麻烦的,但是在中间还是遇到了很多问题。比如我远程一直连接不上,我检查了自己防火墙关了,安全组加了但是就是访问不到,后来我一想我用的是测试服务器然后这个服务器的环境不是我搭的然后我就问搭建的人发现他用的是iptables,因为这个问题我挠了2个小时的头。期间还遇到python多版本问题,还无意间把用户添加到了user_list这个文件中(这个文件里面的用户是不能使用ftp的)等等问题。不管怎么说还是把问题解决了,写个文章来记录一下吧。

  

记录Centos7搭建ftp服务器以及遇到的各种坑的更多相关文章

  1. 虚拟机中使用centos7搭建ftp服务器

    应用场景 本地windows作为客户端,虚拟机CentOS7作为服务器端,搭建FTP服务器,本地访问虚拟机实现文件的上传下载.如何在虚拟机安装centos7就不在赘述. 1.在centos7上安装vs ...

  2. Centos7搭建FTP服务器

    从网上搜索了好多搭建Centos7搭建服务器的教程都没有成功唯独这个,利用Windows资源管理器连接测试成功. 一.通过yum安装vsftpd yum install -y vsftpd 二.修改v ...

  3. 【腾讯云服务器】基于centos7搭建ftp服务器(vsftpd)

    该博客分为三部分设置,1.ftp服务器搭建.2.防火墙设置  3.腾讯云安全组 一.ftp服务器搭建 1.1  安装vsftpd yum install vsftpd -y 1.2 启动vsftpd服 ...

  4. [CentOs7]搭建ftp服务器

    摘要 vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux. ...

  5. [CentOs7]搭建ftp服务器(2)——添加用户

    摘要 上篇文章完成了ftp服务器的安装与匿名访问的内容,当然出于安全的考虑是不允许匿名访问服务器的,所以就有了本篇的内容 ,为ftp服务器添加用户,用改用户进行访问. vsftpd添加用户 FTP用户 ...

  6. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹

    摘要 上篇文章介绍了如何为ftp添加虚拟用户,本篇将继续实践如何上传,下载文件. 上传 使用xftp客户端上传文件,如图所示 此时上传状态报错,查看详情 从错误看出是应为无法创建文件造成的.那么我们就 ...

  7. centos7搭建ftp服务器并配置匿名用户

    什么是FTP? FTP(File Transfer Protocol,文件传输协议),是TCP/IP网络和Internet上最早使用的协议之一.用来将实现从一台电脑传送文件到另一台电脑,或者接收和查看 ...

  8. 腾讯云服务器linux centOS7.4 搭建ftp服务器 vsftpd

    腾讯云服务器linux centos 7.4 搭建ftp服务器 vsftpd 在centos 7.3测试也是OK的,其它版本没有实验 # 安装 vsftpd $ yum install vsftpd ...

  9. CentOS7搭建FTP Server

    本文主要记录CentOS下FTP Server的安装和配置流程. 安装vsftpd yum install -y vsftpd 启动vsftpd service vsftpd start 运行下面的命 ...

随机推荐

  1. Git忽略提交 .gitignore配置。自动生成IDE的.gitignore。解决gitignore不生效

    语法 以”#”号开头表示注释: 以斜杠“/”开头表示目录: 以星号“*”通配多个字符: 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表: 以叹号“!”表示不忽略(跟踪)匹配到的文件或 ...

  2. Java并发:Executor与连接池

    概述 首先来说一说java连接池中常用到的几个类:Executor,ExecutorService,ScheduledExecutorService Executor 执行已经提交的任务对象.此接口提 ...

  3. Echarts 曲线数少于图例数解决方法

    在上一篇文章 Echarts 多曲线“断点”问题解决方法 中说到了Angular 项目中要使用 Echarts 的方法. 说明了自己解决当“每一条曲线的横坐标不相同”时,在各条曲线上,它们的值采用数组 ...

  4. Golang 读取写入Etcd

    http://www.yunweipai.com/archives/8131.html 新一代etcd:etcd3 etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现.简 ...

  5. CF893F:Subtree Minimum Query(线段树合并)

    Description 给你一颗有根树,点有权值,m次询问,每次问你某个点的子树中距离其不超过k的点的权值的最小值.(边权均为1,点权有可能重复,k值每次询问有可能不同,强制在线) Input 第一行 ...

  6. 安装MySQL-python

    安装MySQL-python 1. yum -y install mysql  mysql-devel 2. yum -y install python-devel 3. pip install -i ...

  7. 20145203盖泽双 《Java程序设计》第四周学习总结

    20145203盖泽双 <Java程序设计>第四周学习总结 教材学习内容总结 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单 ...

  8. ES6新特性4:字符串的扩展

    本文摘自ECMAScript6入门,转载请注明出处. 一.ES5字符串函数 concat: 将两个或多个字符的文本组合起来,返回一个新的字符串. indexOf: 返回字符串中一个子串第一处出现的索引 ...

  9. Sequelize-nodejs-2-basic usage

    Basic usage基本使用 To get the ball rollin' you first have to create an instance of Sequelize. Use it th ...

  10. JS 兼容大全

    //获取浏览器可视区宽度 function getWidth() { if (window.innerWidth){ return window.innerWidth; } else{ if (doc ...