一、FTP服务器简介

FTP(File Transfer Protocol):文件传输协议,是一个客户机/服务器系统。使用FTP的用户需要经过验证后才能登录

FTP:文件传输协议,工作模式[客户端/服务器],FTP服务的端口号:tcp/21、tcp/20

  • 主动模式:从服务器方主动发送连接,tcp/21
  • 被动模式:从客户端发送连接请求,tcp/20 (默认情况 )

FTP服务器的用户可分成3类。

系统用户

​ 即系统本机的用户。Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件系统进行工作。但通常不希望他们通过FTP方式远程访问系统。

虚拟用户

​ 只能采用FTP方式使用系统的用户,不能直接使用Shell登录系统,即虚拟用户,访问服务器时需要验证。大多数FTP用户是这类用户。登录身份是/sbin/nologin

匿名用户

​ 对于公共性质的服务器可以提供匿名用户访问,用户名:anonymous/ ftp。但在使用匿名用户时,应对其进行尽可能多的限制,权限较低,如:同时连接的用户数量受限,访问的文件数目受限,不能上传文件,允许操作的指令较少,设置匿用户同时登入的最大联机数量等。

二、FTP服务器的安装–yum

软件的安装:使用yum安装

yum安装的原理介绍:自动到软件仓库云下载相应软件包进行自动安装

软件存放的位置(软件仓库):

  • 网络源:http:// 或 https://
  • FTP源:ftp://
  • 本地:file://

yum源文件存放位置(必须在这个位置): cd /etc/yum.repos.d/

  • 系统默认yum源文件:
  • 可以制作本地yum源文件:
  • 可制作阿里云网络免费源文件:

yum安装的命令:

查看软件是否已经安装:rpm -qa | grep 软件名称
检查yum源文件:yum list | grep vsftpd  //如果找不到则yum源有问题
安装软件:yum install 软件包名称
卸载软件:yum remove 软件包名称
清除yum缓存:yum clean all
生成缓存:yum makecache

1、使用默认yum源安装vsftpd软件包

服务端软件vsftpd 客户端软件ftp

yum install vsftpd ftp

2、启动服务并设置开机自启

vsftpd的服务名称:vsftpd.service

systemctl start vsftpd.service   //启动服务
netstat -l lanp [|grep vsftpd]//查看服务器端口是否开启
systemctl enable vsftpd.service  //开机自启

3、设置防火墙与selinux机制

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
systemctl stop firewalld
setenforce 0

4、访问ftp服务器-访问的默认目录是:/var/ftp

  • Linux系统中使用ftp命令进行访问:

    ftp 192.168.220.130
    
  • 在windows客户端访问ftp服务器:

    ftp://192.168.220.130
    

三、设置匿名用户访问ftp

匿名用户登录时登录用户名为anonymous或者ftp

1、匿名用户访问FTP相关知识点

(1)默认允许匿名用户与系统用户访问ftp,访问的默认目录是:/var/ftp

注:根目录下的/var/ftp目录权限不能有写的权限,要想在文件里有写的权限就要在根目录下再新建一个目录;更改默认目录同理

只有进入var/ftp/ pub才能执行操作 即:ftp>cd pub/

访问测试(用户名:anonymous 密码为空)

(2)ftp的配置文件是:/etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf 做如下配置

设置匿名用户访问ftp:

anonymous_enable=YES
(3)设置匿名用户登录ftp时不输入密码和提示内容:
no_anon_password=YES   //设置匿名用户登录时不输入密码
ftpd_banner= welcome to our home!  //设置提示内容
(4)设置匿名用户上传、新建、删除文件:
anon_upload_enable=YES  //匿名用户上传权限
anon_mkdir_write_enable=YES //匿名用户写权限
anon_other_write_enable=YES  //匿名用户删除权限
(5)设置文件权限
chmod 777 pub  //不推荐使用
chown ftp pub  //更改匿名用户为pub的组用户setfacl -m u:ftp:rwx pub  推荐使用
(6)设置匿名用户上传或新建后的文件权限–local/anon_umask
umask值:决定了新建文件或文件夹时的默认权限
umask值的表示方法:0022
查看umask:[root@localhost pub]#umask
更改umask:[root@localhost pub]#umask 0022
配置local_umask: vim /etc/vsftpd/vsftpd.conf   local_umask=0022
  • 如果使用vsftp的是本地用户,则要修改配置文件中的 local_umask 的值;
  • 如果使用vsftp的是虚拟用户,则要修改配置文件中的 anon_umask 的值。
  • umask = 022 时,新建的目录 权限是755(777-022),文件的权限是 644(666-022);
  • umask = 077 时,新建的目录 权限是700(777-077),文件的权限是 600(666-077)。
(7)设置不允许系统用户登录,只能匿名用户登录:
anonymous_enable=YES
local_enable=NO
(8)设置匿名用户访问ftp的默认目录
anon_root=/var/ftp
anon_root=/var/public

注意:要修改vsftp服务器匿名用户默认目录时,不可以将anon_root设置为一个其他账号已有的家目录,否则不能实现匿名用户访问ftp服务器。

2、完成项目要求

anonymous_enable=YES  允许匿名用户登录
no_anon_password=YES  匿名用户登录时不输入密码

注销匿名用户上传、新建、删除等权限,修改文件权限。

三、配置系统用户访问FTP服务器

1、系统用户访问FTP相关知识

(1)系统用户默认访问主目录,具有上传、下载、新建、删除的权限,还可以切换到的系统其他目录。

关闭匿名用户访问,只允许系统用户访问

anonymous_enable=no   //关闭匿名用户访问
local_enable=yes     ///允许系统用户访问
local_umask=0022
(2)设置系统用户只能访问自己的主目录并具有所有权限,不允许切换到系统的其他目录。
chroot_local_user=YES  ///控制用户访问路径访问自己的主目录,不能切换到其他目录(根目录 /)
allow_writeable_chroot=YES  //允许写入;要设置不能切换其他目录必须加这一行ftpd_banner= welcome to our home!   //提示语
max_clients=30  //设置最大连接数
idle_session_timeout=600  //设置超时时间,单位为秒
(3)设置系统用户访问指定目录,不允许切换到系统的其他目录,并具上传、下载、新建、删除的权限。
local_root=/mnt/public/         //设置系统用户访问ftp的默认目录
write_enable=YES              //允许写入chroot_local_user=YES         //控制用户访问路径访问指定目录,不能切换到其他目录
allow_writeable_chroot=YES   //允许写入修改/mnt/public/目录下的文件权限

2、基于本地用户的访问控制

默认情况下,ftp服务器中所有系统用户都可以访问ftp,如何来限定只有指定的系统用户可以访问呢?vsftp中提供了两个与系统用户相关的配置文件:

  • /etc/vsftpd/ftpusers 提供了一份用于禁止登录的ftp用户列表**(黑名单)**。 此文件中包含的用户将被禁止登录vsftpd服务器,不管该用户是否在/etc/vfsftpd/user_list中出现。

  • /etc/vsftpd/user_list 提供了一份用于允许登录的ftp用户列表**(白名单)**,此文件中包含的用户可能被禁止登录,可能被允许登录。

  • 具体在主配置文件vsftpd.conf中决定:

当存在userlist_enable=YES时,user_list文件生效。
当存在userlist_deny=YES时,则仅禁止列表中的帐户登录。
当存在userlist_deny=NO时,则允许列表中用户登录。
  • 其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在于两个文件中,则被拒绝访问ftp。

​ 举例:只让ftpuser用户访问ftp,那么可以进行如下设置

#vim /etc/vsftpd/vsftpd.confuserlist_enable=YES    启用userlist用户列表(系统默认设置)userlist_deny=NO     只允许列表中的用户登录
#vim/etc/vsftpd/user_list

将服务重启后,在客户端测试,此时只有ftpuser用户可以访问ftp

五、Vsftpd日志管理 --/var/log/xferlog

1、Vsftp软件搭建的FTP服务器的日志文件的配置,在/etc/vsftpd.conf中找到:

xferlog_enable=YES  //开启FTP服务器记录上传下载的情况xferlog_std_format=YES  //日志格式xferlog_file=路径    //指定日志文件  默认在/var/log/xferlog

2、日志文件输出字段含义(左->右):

Tue Jun 9 10:45:35 2020 1 ::ffff:192.168.220.1 636 /pub/Linux.lnk b _ i a <no_password> ftp 0 * c

(1)当前时间(为本地时间),格式为:DDD MMM dd hh:mm:ss YYYY
(2)传输时间:传送文件所用时间,单位为秒
(3)远程主机名称/IP:
(4)文件大小:传输文件的大小,单位为byte
(5)文件名:传输文件名,包括路径
(6)传输类型:
a--以ASCII传输;
b--以二进制文件传输
(7)特殊处理标志:
_:不做任何特殊处理
c:文件是压缩格式
u:文件是非压缩格式
t:文件时tar格式
(8)传输方向:o 从FTP服务器向客户端传输;i 从客户端向FTP服务器传输
(9)访问模式:a 匿名用户;g 来宾用户;r 系统中的用户
(10)用户名
(11)服务名:一般为FTP
(12)认证方式:0 无; 1 RFC931认证
(13)认证用户id:如果使用*,测表示无法获得该id
(14)完成状态:i 传输未完成;c表示传输已完成。

六、配置虚拟用户访问FTP

1、安装Vsftpd虚拟用户需要用到的软件及认证模块

pam*为虚拟用户模块,libdb为数据库的模块

yum install pam* libdb-utils libdb* --skip-broken -y

2、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式如下:

Techftp
123456
netftp
123456
admftp
123456
markftp
123456

3、 导入虚拟用户列表,生成虚拟用户的数据库,设置权限为600

-T -t 用哈希算法进行加密

db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
chmod 600 /etc/vsftpd/vsftp_login.db

配置好了数据库ftpusers.txt就没用了

4、配置PAM认证文件:vim /etc/pam.d/vsftpd.vu(vsftpd.conf里默认的认证文件是vsftpd)

auth  required  pam_userdb.so  db=/etc/vsftpd/vsftp_login
account  required  pam_userdb.so  db=/etc/vsftpd/vsftp_login

5、创建一个系统用户,用于虚拟用户映射

useradd -s /sbin/nologin ftpuser

6、修改配置文件:vim /etc/vsftpd/vsftpd.conf

#pam_service_name=vsftpd   //把这条注释 ,把认证文件改成vsftpd.vupam_service_name=vsftpd.vu
guest_enable=YES   //开启系统虚拟用户访问
guest_username=ftpuser  //指定系统虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf  //指定虚拟用户的配置文件目录
virtual_use_local_privs=YES  //允许虚拟用户访问

7、分别为虚拟用户创建私有的虚拟目录与独立的配置文件

mkdir /home/ftpuser/techftp  //创建默认访问的目录文件
mkdir /etc/vsftpd/vsftpd_user_conf  //创建虚拟用户的配置文件目录
cd /etc/vsftpd/vsftpd_user_confvim techftplocal_root=/home/ftpuser/techftp  //默认访问的目录write_enable=YES  //允许写入anon_world_readable_only=YES  //允许浏览anon_upload_enable=YES  //允许上传anon_mkdir_write_enable=YES  //允许创建anon_other_write_enable=YES  //允许其他用户写入mkdir /home/ftpuser/netftp
cd /etc/vsftpd/vsftpd_user_conf
vim netftplocal_root=/home/ftpuser/netftpwrite_enable=YESvirtual_use_local_privs=NO    #不具有可登录用户的权限   anon_world_readable_only=YES       #可浏览目录anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES在根文件夹下新建文件netftps,改为ftpuser的权限
cd /home/ftpusers/netftp;mkdir netftps
chown ftpuser:ftpuser netftps
systemctl restart vsftpd
ftp 127.0.0.1

例: 系统中有stu1,stu2,stu3,stu4等用户,通过黑白名单的配置只允许系统用户stu1和stu2用户可以访问FTP服务器的/mnt/ftp目录,并且具有上传、下载、新建、删除的权限,并不能切换到其他目录。

1、新建用户
useradd stu1
useradd stu2
useradd stu3
useradd stu4
2、配置文件使黑白名单生效:vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO  //不允许匿名用户登录
local_enable=YES    //允许系统用户登录
local_root=/mnt/ftp  //设置系统默认访问目录
chroot_local_user=YES  //控制用户访问路径访问自己的主目录,不能切换到其他目录(根目录 /)
allow_writeable_chroot=YES //和上一条同设置;允许写入
write_enable=YES     //允许写入
user_list_enable=YES  //设置白名单
list_deny=NO   //使白名单生效//3、配置黑名单:
vim /etc/vsftpd/ftpusers
stu3
stu4
//配置白名单:
vim /etc/user_list
stu1
stu2
4、根目录下新建可修改文件夹:
cd /mnt/ftp;mkdir pub
5、验证stu3  拒绝登录,因为stu3在黑名单内

6、验证stu1,成功

FTP服务器的搭建与配置相关推荐

  1. linux中ftp服务器的搭建和配置

    linux中的ftp服务的搭建及配置 1 ftp概述 2 ftp服务的搭建 2.1 ftp的客户端 2.2 FTP的服务端 2.2.1 服务端软件vsftpd的下载 2.2.2 vsftp的环境配置 ...

  2. ftp服务器 vsftpd搭建和配置以及虚拟用户的设置

    tp: File Transfer Protocol应用层协议:tcp, 21/tcpC/S:Client: 程序Server: 程序数据:命令连接:文件管理类命令,始终在线的连接数据连接:数据传输, ...

  3. FTP服务器的搭建与安全配置

    FTP可以说是Internet上使用非常广泛的一种通讯协议了.它工作在OSI模型的第7层,是TCP/IP的一种具体应用.FTP采用基于TCP的可靠连接:监听21端口来等待控制连接请求,当连接建立后,采 ...

  4. FTP服务器的安装和配置

    FTP服务器的安装和配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本来是想出一个源码安装ftp的教程,但是想想还是算了,如果你自学python有个10天的话你自己就能写一个f ...

  5. centos FTP服务器的架设和配置

    Ftp搭建 参考资料:centos FTP服务器的架设和配置 2009-06-17 18:08 12119人阅读 评论(0) 收藏 举报 1.yum install vsftpd 2.启动/重启/关闭 ...

  6. lede更改软件源_Linux的上传和下载——Ubuntu中软件的安装和ftp服务器的搭建

    [Linux操作系统]Linux的上传和下载--Ubuntu中软件的安装和ftp服务器的搭建 学习完Linux终端命令以后,我们现在要考虑的是怎么实现Linux中文件的上传和下载,这就是我们本篇博客要 ...

  7. linux下ftp服务器的搭建

    http://www.cublog.cn/u3/93926/showart_1874130.html RHEL4中ftp服务器的搭建 首先修改配置文件使主机获得永久ip地址 # vi /etc/sys ...

  8. Windows 网络服务架构系列课程详解(一) ----DHCP服务器的搭建与配置

    Windows 网络服务架构系列课程详解(一) ---------DHCP服务器的搭建与配置   实验背景: 企业网络环境中在没有配置DHCP服务器时,经常会遇到这样的情况,用户不懂怎么去配置IP地址 ...

  9. FTP服务器构建与维护,ftp服务器的搭建与三种访问途径

    FTP服务器的搭建与三种访问途径 FTP服务介绍 FTP服务(File Transfer Protocol,文件传输协议)是典型的C/S结构 的应用层协议,需要由服务端软件,客户端软件两部分共同实 现 ...

最新文章

  1. spoon kettle连接数据库失败解决方法
  2. 如何在html中自动生成条形图,css如何创建3D立体的条形图?
  3. 详解CAPM的数学推导
  4. 验证E-mail是否正确
  5. 【PAT乙级】1035 插入与归并 (25 分)
  6. 线性表----顺序表
  7. 树形结构 —— 树与二叉树 —— 树的数据生成器
  8. vs2010中Calendar控件的一些使用
  9. Unity3D之FSM有限状态机
  10. 在虚拟机中使用物理硬盘的两个用法及注意事项
  11. android 浏览器开技术
  12. 大数据工程师简历_大数据工程师简历范本02
  13. 海马模拟器linux,Droid4X Mac版-海马玩模拟器Mac版下载 V0.8.3Beta-PC6苹果网
  14. python写打飞机游戏
  15. Nature:每两个月注射一次卡波替格拉韦可以让大多数人免受艾滋病毒
  16. 希尔顿集团旗下品牌希尔顿启缤精选酒店在河北廊坊正式开业
  17. scanf函数的返回值以及在while循环中的应用
  18. 台湾--身份证(本国人)正则表达式
  19. Cadence Allegro输出钻孔信息文件图文教程及视频演示
  20. 用sdk画三叶玫瑰曲线

热门文章

  1. 后端node-xlsx读取excel文件后时间格式的转换 - 利用xlsx自带方法
  2. MMDet——基于Chamfer Distance评估点集
  3. 网络在线电视专家 v7.27 怎么用
  4. iOS开发- 实现类似于陌陌点点和探探首页切换效果类似
  5. 4:3 背景图片素材
  6. pythonic的典故_旷视开源深度学习框架「天元」,提供人人可用的AI“生产力工具”【星特写】...
  7. Windows7下MATLAB的安装
  8. 大数据存储技术期末复习(自用)
  9. 树莓派综合项目2:智能小车(一)四轮驱动
  10. 监督学习和无监督学习简单理解