1.FTP简介

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,也是网络上常用的最老的网络协议之一,它使用客户/服务器模式。它属于网络传输协议的应用层。

FTP服务器的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon。默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。

/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

匿名FTP

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。

2.部署ftp服务器

1)部署前我们需要先关闭selinux【内核级加强型火墙】

vim /etc/sysconfig/selinux       ##disabled
getenforce          ##查看状态是否改变
reboot              ##重启系统



2)安装并开启ftp服务

yum install vsftpd -y    ##需提前搭建好yum源,详情可参考作者前面关于yum源搭建的博客
systemctl start vsftpd
systemctl enable vsftpd     ##设置服务开机自启
systemctl status vsftpd


yum install lftp -y

3)设置火墙永久允许ftp服务

方法一:命令设置

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload


方法二:图形设置

![firewall-config](https://img-blog.csdnimg.cn/2019021401024415.png)

在下图中选择【Permanent】,在【Options】中选择第一项

firewall-cmd --list-all          ##查看是否设置成功


4)测试服务

lftp 172.25.254.106
lftp 172.25.254.106:~> ls

4.ftp服务的基本信息

软件安装包:vsftpd

默认发布目录:/var/ftp

协议接口:21/tcp

服务配置文件: /etc/vsftpd/vsftpd.conf

报错id解析:

id 含义
500 文件系统权限过大
530 用户认证失败
550 服务功能未开放
553 本地文件系统权限过小

配置文件内容解释

vim  /etc/vsftpd/vsftpd.conf ------>配置文件

命令 功能
anonymous_enable=YES/NO 匿名用户是否可以登陆
local_enable=YES/NO 本地用户是否可以登陆
write_enable=YES ftp是否对登陆用户可写
anon_upload_enable=YES/NO 匿名用户是否可以上传
anon_root=/direcotry 匿名用户家目录修改
anon_mkdir_write_enable=YES 匿名用户建立目录
anon_other_write_enable=YES 匿名用户删除
anon_umask=xxx 匿名用户上传文件默认权限修改
anon_world_readable_only=YES/NO 匿名用户下载,设定参数为NO表示匿名用户可以下载
chown_uploads=YES
chown_username=student 匿名用户使用的用户身份修改
anon_max_rate=102400 最大上传速率

下面我们将用实验来一一验证

@@@@匿名用户相关设定@@@@

1)设定匿名用户是否可以登陆

如下图所示,能成功执行【ls】命令即可视为登陆成功

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO            ##设定匿名用户不可登陆
systemctl restart vsftpd    ##重启服务


2)设定ftp对本地用户的限制

local_enable=YES/NO  ##本地用户是否可以登录

修改前

修改后——要重启服务

3)修改匿名用户上传权限

关闭时,出现550报错——功能未开放

write_enable=NO
anon_upload_enable=NO


打开权限后——匿名用户上传文件成功

write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub


4)匿名用户家目录修改

anon_root=/mnt      ##配置文件里没有该信息,需要自行添加设置



5)匿名用户上传文件默认权限修改:

anon_umask=022      ##配置文件里没有该信息,需要自行添加设置

修改前

修改后——之前上传的文件权限和修改后上传的文件权限不同

6)匿名用户建立文件


修改文件后

anon_mkdir_write_enable=YES


7)匿名用户下载==

anon_world_readable_only=YESdd|NO  ##no表示匿名用户可以下载,配置文件里没有该信息,需要自行添加设置

开启前

开启后

8)匿名用户删除本地文件权限设置

anon_other_write_enable=YES|NO      ##配置文件里没有该信息,需要自行添加设置


开启后


9)匿名用户时用的用户身份修改

chown_uploads=YES
chown_username=student
chown_upload_mode=0777         ##配置文件里没有该信息,需要自行添加设置



9)设定匿名用户最大上传速率

anon_max_rate=102400        ##102400大概200KB的速度


10)能够最大链接客户端的用户数

max_clients=2           ##一次最多连接2个用户

@@@@本地用户相关设定@@@@

1)登陆权限和写权限

local_enable=YES/NO  ##本地用户登录限制
write_enable=YES/NO  ##本地用户写权限限制

设置前:执行删除操作未成功

修改后:成功执行删除操作


2)本地用户家目录修改

local_root=/dir         ##配置文件里没有该信息需自行添加


3)本地用户上传文件权限

 local_umask=777

修改前

修改后

4)限制本地用户浏览/目录

chroot_local_user=YES      ##所有用户被锁定到自己的家目录中

修改前

修改后

用户不能有写的权限否则会报错500

chmod u-w  /home/*

5)本地用户黑名单的建立

chroot_local_user=NO                         ##NO表示下面的路径为黑名单
chroot_list_enable=YES                       ##表示开启黑白名单功能
chroot_list_file=/etc/vsftpd/chroot_list     ##黑名单路径


6)本地用户白名单的建立

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


修改后:不在白名单中的用户无法正常登陆

7)限制本地用户登陆

/etc/vsftpd/ftpusers          ##永久黑名单


/etc/vsftpd/user_list ##临时黑名单

vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO          ##临时黑名单变为白名单

测试

3.ftp虚拟账户设定

1.创建虚拟用户身份

1)建立虚拟用户名单

vim   /etc/vsftpd/userfile           ##文件名随意

2)将其用hash加密变为db

db_load  -T -t  hash  -f  /etc/vsftpd/userfile /etc/vsftpd/userfile.db


3)编写一个新的认证文件

vim  /etc/pam.d/ftpuser      ##名称随便写
account  required   pam_userdb.so    db=/etc/vsftpd/userfile
帐号       认证方式          认证插件               db文件
auth     required   pam_userdb.so    db=/etc/vsftpd/userfile
认证       认证方式          认证插件               db文件

4)改动主配置文件

vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpuser       ##认证方式(改变认证方式后之前的用户无法登录,可将其之前的认证文件    加入新的文件中即可)
guest_enable=YES              ##打开虚拟用户功能
guest_username=ftp            ##给虚拟用户一个身份


5)重启ftp服务

systemctl  restart  vsftpd

2.虚拟用户指定家目录

1)建立家目录内容

mkdir  /var/ftpuserdir/westos{1..3}  -p      ##【-p】表示同步权限
mkdir  /var/ftpuserdir/westos{1..3}/pub
mkdir  /var/ftpuserdir/westos1/snow1
mkdir  /var/ftpuserdir/westos2/snow2
mkdir  /var/ftpuserdir/westos3/snow3

2)改写主配置文件

local_root=/var/ftpuserdir/$USER               ##登陆后查看自己的家目录
user_sub_token=$USER                           ##认证shell内的$

3)重启ftp服务

systemctl  restart  vsftpd

测试:

虚拟用户不存在

登陆

3.虚拟帐户配置独立的功能

1)给/pub相应的权限

ls  -lr   /var/ftpuserdir/ftpuser{1..3}
chmod  775   /var/ftpuserdir/westos*/pub
chgrp  ftp   /var/ftpuserdir/westos*/pub


下图中可见 /var/ftpuserdir/westos*文件所属组以已更改,且登陆后文件所属组ID为50,查看可知为ftp

2)建立新的一个配置文件

mkdir  -p /etc/vsftpd/user_config
vim  /etc/vsftpd/user_config/westos1        ##westos1为新建文件,文件名随意

此文件设定配置文件中的参数,默认此文件优先级高

3)改写主配置文件,重启服务

vim /etc/vsftpd/vsftpd.conf           ##设置虚拟用户独立配置路径


注意关闭此权限

测试:仅有westos1上传文件成功

部署FTP服务器及其管理相关推荐

  1. WIN10使用IIS部署ftp服务器

    WIN10使用IIS部署ftp服务器 1.打开控制面板→点击卸载程序 2.点击 启用或关闭Windows功能 3.找到Internet Information Services 勾选FTP服务器和We ...

  2. Linux安装部署FTP服务器

    Linux安装部署FTP服务器 本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚拟机 ...

  3. 模拟部署FTP服务器并提供文件的上传及下载

    FTP(File Transfer Protocol:文件传输协议)是TCP/IP协议组中的协议之一,主要是提供文件共享服务. 数据端口20:用于传输数据: 控制端口21:用于传输指令: 操作环境:V ...

  4. 在LINUX中部署FTP服务器

    VSFTPD 服务器部署 一. 安装vsftpd服务的软件. 二. 在配置文件中进行配置. 三. 启动相关服务. 四. 通过ftp命令登录ftp服务器进行测试. 五. vsftpd支持三种用户类型,匿 ...

  5. windows server 2016 部署FTP服务器

    在网上看了很多资料,最后都没有成功,发现他们都少了几个步骤,所以在这里补上.. FTP 是 TCP/IP 网络上计算机之间传送文件的协议,为了上传与下载相关文件,我们常需要在服务器上搭建FTP 服务. ...

  6. ftp服务器账号,Serv-U中的FTP服务器账号管理

    前面我们已经介绍了有关于Serv-U中的FTP服务器设定过程.那么接下来我们在对它的账号的相关内容进行一下解析.首先了解一下这个软件的用户账号管理功能. 用户帐号管理 用户使用FTP服务器的一个最基本 ...

  7. Docker上部署FTP服务器(基于stilliard/pure-ftpd)

    Docker Pure-ftpd Server    参考来源:https://hub.docker.com/r/stilliard/pure-ftpd/     pure-ftpd源码:https: ...

  8. linux - 搭建部署ftp服务器

    ftp 服务: 实现ftp功能的一个服务,安装vsftpd软件搭建一台ftp服务器 ftp协议: 文件传输协议 (file transfer protocol),在不同的机器之间实现文件传输功能, 例 ...

  9. 天翼云主机利用filezilla部署FTP服务器

    一.软件下载 Filezilla服务器端下载地址:http://www.downcc.com/soft/253536.html Filezilla客户端下载地址:https://www.filezil ...

最新文章

  1. MAP/CAP信令常见消息
  2. 基于python3的一次简单的请求url接口返回json类型结果实例。
  3. Gossip算法原理
  4. Firefox 浏览器被“http://hao.169x.cn/?m=sov=1023”劫持
  5. BATJ罕见联手,企业申请“阿京腾百”商标被否:是“阿,今天腾飞”的意思?...
  6. scala的函数(day02)
  7. Java线程:新特征-线程池
  8. 2021芜湖高考成绩查询,2021芜湖市地区高考成绩排名查询,芜湖市高考各高中成绩喜报榜单...
  9. NYOJ41 - 三个数从小到大排序
  10. 写一个生产者消费者的例子
  11. sofia-sip-ua >= 1.12.12… configure: error: no usable sofia-sip; please install sofia-sip-ua devel pa
  12. 【易实战】Spring Cloud Greenwich版本发布
  13. c++邮递员投递经过特定点_关于中国邮递员问题和欧拉图应用
  14. 跟我做一个可以聊天的 Visual Studio Code 插件
  15. 引导从打游戏到学计算机,【润笙学堂】暑假孩子沉迷游戏?妈妈一招化解!
  16. AM437x——LED驱动
  17. 离别,总免不了有些悲伤
  18. Linux的Locale
  19. 创业者必学的六种植物[转]
  20. 手把手完成智慧路灯的开发,完成设备上云【华为云IoT】

热门文章

  1. R语言ggplot2可视化时避免geom_bar对x轴进行排序实战:直接对因子变量进行提前排序后再进行可视化、使用scale_x_discrete函数限定因子顺序
  2. R语言可视化包ggplot2移除(remove)可视化结果的图例(legend)实战
  3. python实现选择排序
  4. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战
  5. 影像组学视频学习笔记(32)-使用SimpleITK进行N4偏置场校正、Li‘s have a solution and plan.
  6. access的未来发展 ieee_传感器行业发展路在何方 多国专家齐聚来一场头脑风暴
  7. 新一代测序技术Sparc
  8. c语言怎么将n个数字存入到数组中_洛谷 || 拼数(C语言)
  9. pandas 增加列
  10. 3dsmax 让物体变透明