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. dcoker 搭建单节点redis

    1.安装docker 1.检查内核版本,必须是3.10及以上 [root@localhost ~]# uname -r 2.安装docker [root@localhost ~]# yum insta ...

  2. python机器学习之支持向量机SVM

    支持向量机SVM(Support Vector Machine) 关注公众号"轻松学编程"了解更多. [关键词]支持向量,最大几何间隔,拉格朗日乘子法 一.支持向量机的原理 Sup ...

  3. 数据库本地data source

    数据源表示数据库所在设备的ip地址或名称,基本上有以下几种写方法 data source = (local) data source = "127.0.0.1" data sour ...

  4. 已经编译安装的nginx/tenginx编译增加新模块

    只适用于自行编译安装的nginx配置 业务变更带来的Nginx增加模块需求 由于业务从php转为go开发,需要用到Http2的协议.这种协议在Nginx上需要http_v2_module这个模块的支持 ...

  5. C++语言学习之STL 的组成

    STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有S ...

  6. C语言重点——指针篇(一文让你完全搞懂指针)| 从内存理解指针 | 指针完全解析

    有干货.更有故事,微信搜索[编程指北]关注这个不一样的程序员,等你来撩~ 注:这篇文章好好看完一定会让你掌握好指针的本质 C语言最核心的知识就是指针,所以,这一篇的文章主题是「指针与内存模型」 说到指 ...

  7. 使用 Xunit.DependencyInjection 改造测试项目

    使用 Xunit.DependencyInjection 改造测试项目 Intro 这篇文章拖了很长时间没写,之前也有介绍过 Xunit.DependencyInjection 这个项目,这个项目是由 ...

  8. python爬虫00什么是爬虫

    用一个自动化的程序把网站背后的程序爬取下来. 在互联网上许许多多的网站,他们都是托管在服务器上的,这些服务器24小时运行着,刻刻 等待着别人的请求.所以,爬虫首先会模拟请求,就好像你在浏览器输入网址, ...

  9. .net core mvc appsettings.json配置文件的使用

    配置文件的使用主要是两种用法 1.直接使用弱类型的数据 2.使用强类型的数据 (将配置的数据映射到类) 直接使用弱类型的数据  在appsetings.json文件中先新建两个节点 TestObj节点 ...

  10. Hopfield Network 霍普菲尔德网络入门

    简介 Hopfield Network (霍普菲尔德网络),是 Hopfield 在1982年提出的一种基于能量的模型,发表的文章是 Neural networks and physical syst ...