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. 删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件:BAT + VBS

    代码如下: @echo off ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除. ::本例调用了临时VBS ...

  2. python给图片添加文字

    如何用几行代码给图片加上想要的文字呢? 下面为大家说下实现过程. 关注公众号 "轻松学编程"了解更多. 有图如下,想添加自写的诗句 诗句 静安心野 朝有赤羽暮落霞, 小舟载我湖旋停 ...

  3. 【Luogu】 P5482 [JLOI2011]不等式组 题解

    本来以为有多难,结果发现是道树状数组水题... 显然,对于每一个添加的不等式,有3种情况: \(a<0\) .此时可转换为 $x < {{a} \over {c-b}} $ . 但是,我们 ...

  4. JUC 包下工具类,它的名字叫 LockSupport !你造么?

    前言 LockSupport 是 JUC 中常用的一个工具类,主要作用是挂起和唤醒线程.在阅读 JUC 源码中经常看到,所以很有必要了解一下. 公众号:liuzhihangs ,记录工作学习中的技术. ...

  5. 获取List集合对象中某一列属性值

    例:获取disposeList集合中CorpusMarkPage对象中的responseId属性,生成新的List集合 List<String> responseIdList = disp ...

  6. Cuda常用概念及注意点

    线程的索引计算 只需要知并行线程的初始索引,以及如何确定递增的量值,我们希望每个并行线程从不同的索引开始,因此就需要对线程索引和线程块索引进行线性化,每个线程的其实索引按照以下公式来计算: int t ...

  7. !!vue-style-loader!css-loader?

    摘自:https://blog.csdn.net/qq_27721169/article/details/88666340 问题描述*!!vue-style-loader!css-loader?{&q ...

  8. python_端口扫描

    client.py import socket def get_ip_status(ip, port): sk= socket.socket(socket.AF_INET, socket.SOCK_S ...

  9. Jave正则的实现

    java的正则实现需要先导入 java.util.regex. java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示.Patte ...

  10. Ceph的Mon数据重新构建工具

    关于mon的数据的问题,一般正常情况下都是配置的3个mon的,但是还是有人会担心 Mon 万一三个同时都挂掉了怎么办,那么集群所有的数据是不是都丢了,关于后台真实数据恢复,有去后台取对象,然后一个个拼 ...