Centos7下FTP服务器的搭建

一、FTP的作用

文件传输协议(File Transfer Protocol,FTP),是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,其中20端口是数据端口用于进行数据传输,21端口为命令端口,用于接收客户端发出的相关FTP命令和参数

FTP协议工作模式有两种:主动模式和被动模式,其中被动模式是默认的工作模式

A.主动模式:FTP 服务器主动向客户端发起连接请求

B.被动模式:FTP 服务器等待客户端发起连接请求

由于FTP一般部署在企业内网,如果开启并配置了防火墙,有时候需要将FTP的工作模式设置为主动模式,才可以传输数据

二、vsftpd(FTP守护进程)三种认证模式

1.匿名开放模式:任何人都可以无需密码验证而直接登录到FTP服务器

2.本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式

3.虚拟用户模式:需要为FTP服务单独 建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在 服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。是三种模式中最安全的一种认证模式,用的最多

三、vsftpd.conf的主要参数(根据实际情况来进行配置权限)

四、搭建流程

1.服务器端vsftpd的安装

①    通过rpm命令查看是否已经安装过vsftpd,如果没有安装则通过yum命令安装

rpm  - q  vsftpd              #查看是否安装vsftpd
yum -y install vsftpd #下载vsftpd

 

安装完成后,是否成功查看配置文件/etc/vsftpd/

rpm  -q  vsftpd             #查看是否安装vsftpd 
ll /etc/vsftpd              #查看配置文件

2.匹配认证模式

(1)匿名开放模式:匿名用户可以上传、下载、创建、删除、更名文件的权限

A.服务器端:

①    把主配置文件备份,删除注释的参数,再重定向将其覆盖到主配置文件

cat /etc/vsftpd/vsftpd.conf          #查看配置文件(注释看多不好看,把注释删除)
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #配置文件备份
ll /etc/vsftpd #查看文件(夹)
grep -v "#" /etc/vsftpd/vsftpd.conf.bak >/etc/vsftpd/vsftpd.conf #删除注释的参数,再重定向将其覆盖到配置文件
cat /etc/vsftpd/vsftpd.conf #查看配置文件(已没有注释参数)

②写入相应的权限

vim /etc/vsftpd/vsftpd.conf       #编辑配置文件
anon_umask=022 #匿名用户上传文件的umask的值
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建目录
anon_other_write_enable=YES #允许匿名用户其他的权限(重命名,删除)

③重启vsftpd服务,并添加到开机启动

systemctl restart vsftpd        #重启服务
systemctl enable vsftpd #添加到开机启动

④在/var/ftp/pub/下创建文件

cd /var/ftp/pub/       #切换路径
touch 文件名 #创建文件

⑤清除防火墙的默认策略(或直接关掉防火墙)

systemctl stop firewalld           #关闭防火墙
yum -y install iptables-services #下载iptables
systemctl enable iptables #开启自启
systemctl start iptables #启动iptables
iptables -F #清除策略
service iptables save #保存配置

若直接关闭防火墙则不需要以上的操作,因为实际工作当中为了安全防火墙是开启的,而防火墙默认禁止了ftp传输的端口,因此清除防火墙的默认策略,centos7中没有service iptables save指令来保存防火墙的规则,所有采用以上的方式来实现

⑥修改ftp用户的权限

ll -d /var/ftp/pub                  #查看pub目录
chown -Rf ftp /var/ftp/pub #改变ftp用户的权限
ll -d /var/ftp/pub #查看pub目录

通过查看pub目录发现只有root用户才有写入的权限,所以直接把pub目录所有者改为ftp用户,让ftp用户也拥有写入的权限

⑦修改ftp域相关的规则(或直接关掉SELinux,方法见17)

getenforce                        #查看SELinux的状态
getsebool -a | grep ftp #查看ftp的规则
setsebool -P ftpd_full_access=on #修改ftpd_full_access为永久打开

实际工作中SELinux一般都是开启的,当SELinux状态为开启,查看与ftp域相关的策略,修改当中的规则

B.客户机端:

①通过rpm命令查看是否已经安装过ftp,如果没有安装则通过yum命令安装

rpm -q ftp             #查看是否安装ftp
yum -y install ftp #下载ftp

②用ftp连接下载文件

ftp  服务器地址     #连接服务器端

匿名开放认证模式下,账户统一为 anonymous,密码为空,进入后

ls               #查看文件/目录
cd pud #切换路径
ls #查看文件/目录
get 文件名 #下载文件
quit(exit) #退出
ll #可以查看到刚下载的目录

③用ftp连接创建目录

ftp  服务器地址      #连接服务器端
anonymous 用户名 密码为空
mkdir 文件名 #创建目录
ls #查看刚创建的目录
rmdir 文件名 #删除目录

回服务器端,用 ll  /var/ftp/pub可以查看刚从客户机端创建的目录

(2)本地用户模式

A.服务器端:

①关闭匿名模式,开启本地匿用户模式,并添加相应的参数

anonymous_enable=NO            #关闭匿名模式登录
local_enable=YES #允许本地用户登录
write_enable=YES #可写权限
local_umask=022 #本地用户模式创建文件的 umask 值
userlist_enable=YES #启用“禁止用户名单”
userlist_deny=YES #开启用户作用名单文件功能

vsfftpd服务默认开启了匿名模式和本地用户模式,如果没有手动配置一下

②重启vsftpd服务

systemctl restart vsftpd       #重启
systemctl enable vsftpd #自启

③创建用户设置密码

useradd  用户名    #添加用户
passwd 用户名 #给用户设置密码

输入密码指令后,会提示输入密码和确认密码

B.客户机端

用ftp连接服务器后,用刚创建的用户密码登录就可以进行操作。

注意:

a.本地用户模式不用修改用户的权限,因为连接后默认访问的是该用户的家目录(/home/ftptest)

b.该模式下默认禁止root和大部分系统用户登录,如果非登不可,就在服务器端删除/etc/vsftpd/user_list和/etc/vsftpd/ftpusers路径下的同个用户名

(3)虚拟用户模式

A.服务器端

①在vuser.list中创建用户信息

cd /etc/vsftpd/      #切换路径
vim vuser.list #创建用户信息
用户1
密码
用户2
密码

②转换用户文件格式(db_load命令)

db_load                #查看是否安装此命令(若有显示如下)
usage: db_load [-nTV] [-c name=value] [-f file]
[-h home] [-P password] [-t btree | hash | recno | queue] db_file
usage: db_load -r lsn | fileid [-h home] [-P password] db_file
yum -y install db4 #若没有则下载(有就略过此步)
db_load -T -t hash -f vuser.list vuser.db #明文的vuser.list文件转换为了vuser.db格式的文件
file vuser.db #看是否转换成功(成功如下)
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
ll vuser.db #查看
chmod 600 vuser.db #降低该文件的权限
rm -rf vuser.list #删除明文文件

③创建PAM文件

vim /etc/pam.d/vsftpd.vu      #创建并编辑.du文件
auth required pam_userdb.so db=/etc/vsftpd/vuser #db参数
account required pam_userdb.so db=/etc/vsftpd/vuser #db参数

.vu的文件名可以任意,用于虚拟用户认证,db参数为上一步db_load命令生成的数据库文件的路径,不用写后缀名

④创建本地用户来映射虚拟用户

useradd -d /var/ftpdir -s /sbin/nologin virtual   #创建虚拟用户的映射账户
chmod -Rf 755 /var/ftpdir/ #修改权限

创建本地用户来映射虚拟用户,避免 系统无法处理虚拟用户所创建文件的属性权限

⑤添加虚拟用户模式的参数

anonymous_enable=NO      #禁止匿名开放模式
local_enable=YES #允许本地用户模式
guest_enable=YES #开启虚拟用户模式
guest_username=virtual #指定虚拟用户账户
pam_service_name=vsftpd.vu(将vsftpd修改为vsftpd.vu) #指定PAM文件,存放于/etc/pam.d/目录下
allow_writeable_chroot=YES #允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求

在本地模式的基础上添加虚拟用户模式的参数,必须关闭匿名模式,开启本地模式,且修改pam_service_name参数为vsftpd.vu

⑥设置虚拟用户的权限

mkdir /etc/vsftpd/a(任意)      #创建用户目录,此目录对应之前创建的用户
cd a/ #切换到创建的目录路径
touch 用户1(默认查看权限) #创建之前一样的用户并写入相应的权限
vim 用户2 #创建之前一样的用户并写入相应的权限
anon_upload_enable=YES #上传权限
anon_mkdir_write_enable=YES #写的权限
anon_other_write_enable=YES #重命名,删除权限 vim /etc/vsftpd/vsftpd.conf #定义虚拟用户不同权限的配置文件所存放的路径
user_config_dir=/etc/vsftpd/a(文件中添加)

⑦重启vsftpd服务

systemctl restart vsftpd

B.客户机端

ftp连接用虚拟用户1和用户2登录进行测试了,实现各自之前设置的权限即可

总结:

1.涉及到服务的配置,要考虑防火墙和SELinux的因素

2.配置了服务,都要加入开机启动中,让其每次重启自动生效

3.出现问题从用户权限、目录权限、网络防火墙、SELinux服务几个方面去考虑

自学linux——18.FTP服务器的搭建的更多相关文章

  1. Linux篇---ftp服务器的搭建

    一.前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结. 二.具体 1.显示如下图则表示已安装 vsftp软件.如果未显示则需要安 ...

  2. Linux:FTP服务器的搭建

    FTP服务器的简介 系统用户 即系统本机的用户.Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件 系统进行工作.但通常不希望他们通过FTP方式远程访问系统. 虚拟用户 只能采用FT ...

  3. 自学linux——20.Samba服务器的搭建

    Samba服务器的搭建 一.Samba的认识 1.Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件 2.Samba不仅用于Linux与windows系统直接的文件共享和打印共 ...

  4. 自学linux——21. NFS服务器的搭建

    NFS服务器的搭建 1.NFS的认识 NFS(Network File System即网络文件系统)服务最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享文件,可以将远程 Linu ...

  5. Linux中FTP服务器的搭建

    vmware12上安装的CentOs6.8,最终实现物理机上的windows10能正常访问CentOs上的FTP服务器. 一.查看是否安装有ftp相关的安装包. # rpm -qa | grep vs ...

  6. 自学linux——19.TFTP服务器的搭建

    TFTP服务器的搭建 1.TFTP的认识 TFTP(Trivial File Transfer Protocol)简单文件传输协议,是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议,不需 ...

  7. 《Linux下FTP服务器搭建及FTP使用》

    .LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...

  8. linux下Ftp环境的搭建

      Ftp环境的搭建 1.ftp软件的安装 使用ssh远程连接linux系统,上传和下载一些文件,Ftp是不可少的 Ftp的安装很简单,远程登录系统后使用命令 yum list vsftpd 通过提示 ...

  9. Linux启动ftp服务器530 Permission denied解决方法(已试,行)

    Linux启动ftp服务器530 Permission denied解决方法重新在虚拟机下安装了linux.现在我想启动linux自带的ftp服务器:#service  vsftpd  start . ...

随机推荐

  1. DTU连接经常遇到的问题有哪些

    随着物联网的不断推进,工业.环保.能源.共享等领域对于DTU设备的应用也越来越广泛,在应用过程中,DTU经常遇到哪些问题以及解决办法,下面做如下分析. 第一,DTU如何与组态软件连接? 答:二者连接的 ...

  2. spark求相同key的最大值

    需求: 求相同key的最大值  [("a", 3),  ("a", 2),  ("a", 5),  ("b", 5),  ...

  3. [Luogu P1122]最大子树和 (简单树形DP)

    题面 传送门:https://www.luogu.org/problemnew/show/P1122 Solution 这是一道简单的树形DP题. 首先,我们可以转换一下题面,可以发现,题目要求我们求 ...

  4. .NetCore中简单使用EasyNetQ

    前言 我们在.Net中使用RabbitMQ,最原始的就是基于RabbitMQ.Client进行编码,在这个过程中我们需要通过代码约定和维护队列,Exchange等.如果是自行编码封装通用型的Rabbi ...

  5. 动态规划——用二进制表示集合的状态压缩DP

    动态规划当中有非常常见的一个分支--状态压缩动态规划,很多人对于状态压缩畏惧如虎,但其实并没有那么难,希望这文章能带你们学到这个经典的应用. 二进制表示状态 在讲解多重背包问题的时候,我们曾经讲过二进 ...

  6. Spring Security 实战干货:OAuth2第三方授权初体验

    1. 前言 Spring Security实战干货系列 现在很多项目都有第三方登录或者第三方授权的需求,而最成熟的方案就是OAuth2.0授权协议.Spring Security也整合了OAuth2. ...

  7. 典型分布式系统分析:Dynamo

    本文是典型分布式系统分析系列的第四篇,主要介绍 Dynamo,一个在 Amazon 公司内部使用的去中心化的.高可用的分布式 key-value 存储系统. 在典型分布式系统分析系列的第一篇 MapR ...

  8. C++ 基础 2:C++ 对 C 语言的拓展

    1 引用 1.1 定义及编程实践 引用,是某个已存在变量的另一个名字. 一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 注意: 引用没有定义,是一种关系型声明.声明它和原有某一 ...

  9. absolute与relative 的超越

    relative 超越了自身而已,所有位置的变化是相对于正常流下自身的表现而言 absolute  超越了父容器,位置信息是基于父容器的位置而言

  10. 为什么关不掉所有的OSD

    前言 碰到一个cepher问了一个问题: 为什么我的OSD关闭到最后有92个OSD无法关闭,总共的OSD有300个左右 想起来在很久以前帮人处理过一次问题,当时环境是遇上了一个BUG,需要升级到新版本 ...