目录

1、FTP服务概述

2、在服务端安装vsftpd程序

3、基于匿名用户验证访问的 FTP 服务

4、测试匿名 FTP服务

5、基于用户验证访问的FTP服务

6、基于用户验证访问的FTP服务的测试

7、FTP的其他服务

8、基于虚拟用户验证访问的FTP服务

9、基于虚拟用户验证访问FTP服务的测试


写在开头,作者是小白,刚开始学习linux这一块的知识,所以文章可能写的有些乱和繁杂,希望读者能够理解,因为是初学者,所以文中有些观点可能并不正确,希望有大佬能够指出,拜谢!!

1、FTP服务概述

FTP连接及连接模式
控制连接:TCP 21(端口号),用于发送FTP命令信息
数据连接:TCP 20(端口号),用于上传,下载数据
数据连接的建立类型
    主动模式:服务端从20端口主动向客户端发起连接
    被动模式:服务端在指定范围内某个端口被动等待客户端连接  
    从运维角度来看,被动模式比较合适

####FTP 传输模式####
1、主动模式:
         服务器主动发起数据连接。首先客户端向服务器的21端口建立FTP管理连接
         客户端以PORT命令告诉服务器“我打开了某个端口”你来连我。
         这个时候服务器以源端口20(用于发送数据的端口) 向客户端“我打开了某个端口”(随机端口号)请求并建立连接。

2、被动模式:场景:客户端有防火墙
客户机主动发起数据连接。首先客户端向服务器的21端口建立FTP管理连接
          客户端有防火墙,这个时候服务器连接客户机是连不起来的,因为客户端有
          防火墙,需要被动模式,
          服务端以PASV命令告诉客户端“我打开了某个端口”你来连我。
          于是客户端以随机端口号向服务端“我打开了某个端口”进行建立数据连接

文本模式:又称为ASCII模式,一般用于存文本的传输。
二进制模式:这种模式不会转换文件中文本的字符序号
在二者之间,二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,无需指定

###FTP 用户的类型###
1、匿名用户
2、本地用户(放在/etc/vsftpd/user_list中的用户)
3、虚拟用户

###Vsftpd 软件包##
1、官方站点:http://vsftpd.beasts.org/
2、主程序:/usr/sbin/vsftpd
3、服务名:vsftpd
4、用户控制列表文件
 /etc/vsftpd/ftpusers
 /etc/vsftpd/user_list

5、主配置文件
 /etc/vsftpd/vsftpd.conf

###常见的 FTP 客户端程序###
1、ftp 命令
2、CuteFTP
3、FlashFXP
4、LeapFTP
5、Filezilla
6、gftp
8、kuftp

###常见的 FTP 服务器程序###
1、IIS
2、Serv-U
3、wu-ftpd
4、Proftpd
5、vsftpd(Very Secure FTP Daemon)

2、在服务端安装vsftpd程序

关闭防火墙 
[root@localhost ~]# systemctl stop firewalld    ##当前关闭防火墙,临时的
[root@localhost ~]# systemctl disable firewalld    ##开机不启用防火墙  永久关闭的
关闭核心防护(和写数据有关系的)
[root@localhost ~]# setenforce 0        ##当前关闭核心防护,临时的
[root@localhost ~]# vi /etc/selinux/config    ##开机不启核心防护  永久关闭的
SELINUX=disabled
[root@localhost ~]# init 6            ##重启虚拟机

[root@zhengkun ~]# rpm -qa | grep vsftpd        ##查看是否安装了vsftpd

【注意】服务端安装的是vsftpd,只有安装vsftpd才会有ftp目录和pub目录以及匿名用户ftp等。

##如果没有安装
[root@localhost ~]# mount /dev/cdrom /mnt                                   ####挂载光盘
##rpm安装
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm        ####安装FTP软件包

用rpm安装,还需要永久挂载光盘。否则重启虚拟机挂载的光盘就没了。

或者使用yum安装(需要先配置yum源,配置本地源或者线网源)
[root@localhost ~]# yum -y install vsftpd        ####安装FTP软件包

####基于匿名访问 FTP 服务---####
1、准备匿名 FTP 访问的目录
   FTP的根目录是不允许匿名用户或者其他用户有写入权限(否则有500报错的)
   为了后续测试方便,可以在/var/ftp目下创建一个测试文件(压缩包)

   
[root@localhost ~]# tar zcf /var/ftp/vsftpdconf.tar.gz /etc/vsftpd
[root@localhost ~]# ll /var/ftp
总用量 4
drwxr-xr-x 2 root root    6 8月   3 2017 pub
-rw-r--r-- 1 root root 2795 9月  29 18:24 vsftpdconf.tar.gz

3、基于匿名用户验证访问的 FTP 服务

[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak    

###备份一下 vsftpd.conf文件,并将备份的文件改名为vsftd.conf.bak。

[root@localhost ftp]#  grep -vE "^#|^$" /etc/vsftpd/vsftpd.conf           ####过滤相关配置文件
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

########根据上述配置,编辑匿名配置脚本 #########
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf      ####编辑匿名登录配置文件
anonymous_enable=YES                                      ####允许匿名访问
local_enable=NO                                           ####若不需要启动本地用户,可以设置NO
write_enable=YES                                          ####开放服务器的写入权限
anon_umask=022                                            ####设置匿名用户上传数据的权限掩码
anon_upload_enable=YES                                    ####允许匿名用户上传文件
anon_mkdir_write_enable=YES                               ####允许匿名用户创建目录
anon_other_write_enable=YES                               ####允许匿名用户覆盖删除等管理操作
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=NO                                   ####因未启用本地用户,可将用户列表功能禁用
tcp_wrappers=YES

方便大家复制

匿名访问共享文件的vsftpd.conf的配置

anonymous_enable=YES
local_enable=NO
write_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=YES

[root@localhost ~]# systemctl start vsftpd            #####启动vsftpd服务
[root@localhost ~]# netstat -anpt | grep "vsftpd"     #####查看vsftpd服务是否启动  有21端口表示开启 ,如果提示没有netstat命令,表示没有安装net-tools,用yum安装,安装一下my-tools:  yum -y istall net-tools  

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      59598/vsftp

4、测试匿名 FTP服务

第一种测试方法:
 Window主机在我的电脑浏览器地址栏中输入ftp://20.0.0.54/   就可以进行匿名访问。

不能直接在ftp目录下进行传文件 下文件 删文件操作。因为ftp目录不允许匿名用户修改。即使修改ftp目录的访问权限也需要用户登录。

所以只能在pub中进行操作。所以要更改pub的权限为757,重启一下vsftpd服务,再用ftp://20.0.0.54/pub就可以在在里面进行传文件 下文件 删文件操作。

第二种测试方法:
另起一台虚拟机作为客端【注意】客户端安装的是ftp程序,安装ftp才能用ftp命令。

[root@localhost ~]# yum -y install ftp    ###yum安装 ftp软件  也可以用rpm安装
[root@localhost ~]# ftp 20.0.0.54    ###ftp客户端连接 20.0.0.54,这个ip地址根据你的服务端的ip地址来定

提示successful表示登陆成功

使用ftp作为Name(用户名)登录,ftp服务中的ftp用户就表示匿名用户,相当于samba服务中的nobody用户,所以这也是一种匿名用户登录方式。匿名用户登录不需要输入Password直接回车就行。

【插个知识点】

{

虚拟机的账号信息存放在/etc/passwd目录下,可以用下行命令查看账号信息

less /etc/passwd                                                 ###表示查看账号信息

查看用户详细信息时,最后面是/sbin/nologin,像上图这样的,表示该账号是程序账号。

}

###客户端从服务端下载文件###

ftp> lcd /opt                                                                  ####将本地目录切换到/opt目录

ftp> get vsftpdconf.tar.gz                                                     ####下载vsftpdconf.tar.gz到/opt

ftp> quit                                                                      ####退出

ll /opt                                                                            ####查看opt目录是否下载成功

###客户端向服务端上传文件###

ftp> cd pub                                                                    ####将ftp目录切换到pub目录

ftp> ls                                                                             ####ls查看一下pub目录的内容

ftp> lcd /root                                                                 ####将本地目录切换到/root目录

ftp> put initial-setup-ks.cfg                                              ####上传initial-setup-ks.cfg【注:这里我上传的是文件,如果上传文件夹会报错not a plain file:有知道怎么解决的大神希望可以帮忙评论一下】

ftp> ls                                                                            ####从新查看pub目录的内容,查看是否上传成功

 输入quit,退出ftp命令行

 ###直接用wget下载文件

wget ftp://20.0.0.54/vsftpdconf.tar.gz    【注】此时你的工作目录在哪,文件就会下载在哪。

5、基于用户验证访问的FTP服务

[root@localhost opt]# useradd laya                              ###新建账户laya
[root@localhost opt]# passwd laya                                ###设置账户密码

[root@localhost opt]# useradd vanko                                ###新建账户laya
[root@localhost opt]# passwd vanko                                ###设置账户密码

[root@localhost opt]# useradd hunter                              ###新建账户laya
[root@localhost opt]# passwd hunter                                ###设置账户密码

[root@l###修改vsftpd.conf配置文件###ocalhost ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=YES

#####重启vsftpd服务####
[root@localhost ~]# systemctl restart vsftpd

####在客户端重新登录ftp,登录到20.0.0.54#####

[root@zhengkun var]# ftp 20.0.0.54

 这里的密码就是刚才创建账号时的密码。

6、基于用户验证访问的FTP服务的测试

[root@localhost opt]# ls >uptest.txt               ####在/opt目录下做一个测试文件
[root@localhost opt]# ftp 20.0.0.54                ####登录ftp
Name (192.168.32.16:root): laya                     ####使用laya账户

ftp> put uptest.txt                                          ####上传测试文件
ftp> ls                                                             ###查看测试文件

ftp> quit
【注】这里的测试文件是上传在laya的家目录下的  cd   /home/laya

####给账户登录做下白名单,使用部分账户能登录#####

[root@localhost ~]# vi /etc/vsftpd/user_list   #####在白名单上添加账户laya
laya
[root@localhost ~]# vi /etc/vsftpd/ftpusers      #####在ftpusers上添加账户vanko

vanko

hunter账号不进行任何操作

【ftpusers不收vsftpd.conf配置的影响,它是一个黑名单,在他上面的账号,不允许登入ftp】

#####重新配置vsftpd.conf###### 

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=YES                           #####这个白名单功能开启
userlist_deny=NO                              #####黑名单功能关闭   不禁用user_list列表中的用户tcp_wrappers=YES

#####重启vsftpd服务器####
[root@localhost ~]# systemctl restart vsftpd

####这样配置,user_list起到的就是白名单的作用,此时只有user_list中的账号允许登录。也就是只有laya账号可以登陆####

####修改一下userlist_enable和userlist_deny就可以将user_list变为黑名单####

userlist_enable=YES                           #####这个白名单功能开启
userlist_deny=YES                             #####黑名单功能如果也开启

#####重启vsftpd服务器####
[root@localhost ~]# systemctl restart vsftpd

####这样配置,user_list起到的就是黑名单的作用,此时只有user_list中的账号就不允许登录了,也就是说只有hunter账号可以登陆####

7、FTP的其他服务

1、修改vsftpd服务的监听地址、端口
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
。。。。。省略。。。。。
listen=YES

listen_address=20.0.0.54                          ###修改监听地址          
listen_port=2121                                        ###修改端口(默认端口是21)

[root@localhost ~]# systemctl restart vsftpd

#####测试#####

#####在客户端登录ftp######   

ftp 20.0.0.54 2121                       ####因为修改了端口号,所以登录时要加端口号2121####

2.限制FTP的并发连接数,传输速度

vi /etc/vsftpd/vsftpd.conf

追加配置

max_clients=20              ####限制并发的客户端最大是20个
max_per_ip=2                ####限制一个IP的最大连接数是2个
local_max_rate=200000       ####限制本地用户的传输速率是200KB/S

[root@localhost ~]# systemctl restart vsftpd

8、基于虚拟用户验证访问的FTP服务

###最好重新配置一下yum源,不然会有一些莫名其妙的错误###

###首先关闭防火墙和核心防护###

####在服务端yum安装vsftpd####

####vi /etc/vsftpd/vusers.list,配置虚拟用户####

【注】奇数行是账号,偶数行是密码。

####此时查看vusers.list发现是明文,不安全#####

 ####创建DB格式的数据文件对vusers.list进行加密-----特点:这个文件是加密的####
[root@localhost ~]# cd /etc/vsftpd/         
[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[root@localhost vsftpd]# file vusers.db 

#####出于安全考虑将vusers.list和vusers.db的权限改为600####

 【

插个知识点:
samba服务的共享文件夹opt就放在根目录下 /opt
ftp服务的共享文件夹ftp放在根目录下的var目录下 /var/ftp

   添加虚拟用户映射的账号、创建FTP的根目录

[root@zhengkun vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual

[root@zhengkun vsftpd]# cd /var/ftproot/

[root@zhengkun ftproot]# ll

####查看ftproot目录的详细信息,发现访问权限不够,需要修改,改为755###

[root@zhengkun vsftpd]# cd /var/ftproot
[root@zhengkun ftproot]# chmod 755 /var/ftproot/
[root@zhengkun ftproot]# ll /var

###在ftproot中建立两个目录,虚拟账户的目录###

[root@zhengkun ftproot]# mkdir john       
[root@zhengkun ftproot]# mkdir mike

 为虚拟用户建立PAM认证模块

[root@localhost ftproot]# vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth    required        pam_userdb.so db=/etc/vsftpd/vusers
account required        pam_userdb.so db=/etc/vsftpd/vusers

 修改vsftpd配置、添加虚拟用户支持、为不同用户建立独立的配置文件

[root@localhost ftproot]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO (当然你也可以设成YES,同时允许匿名用户登陆)

local_enable=YES (必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)
guest_enable=YES(启用虚拟用户)

anon_umask=022 (虚拟用户的umask值)
guest_username=virtual(将虚拟用户映射为本地virtual用户)
pam_service_name=vsftpd.vu(指定PAM配置文件,文件已经在/etc/pam.d/存在)
user_config_dir=/etc/vsftpd/vusers_dir(指定不同虚拟用户配置文件的存放路径)

创建vusers_dir目录用来存放虚拟用户配置文件(要与前面不同虚拟用户配置文件的存放路径保持一致

mkdir /etc/vsftpd/vusers_dir

###查看是否创建成功

cd /etc/vsftpd/vusers_dir     

###为虚拟用户john创建配置文件###

vi john

local_root=/var/ftproot/john              (用户目录在哪)
anon_upload_enable=YES                (是否允许上传)
anon_mkdir_write_enable=YES        (是否允许创建目录)
anon_other_write_enable=YES            (是否允许写)

###为虚拟用户mike创建配置文件###

local_root=/var/ftproot/mike                    (用户目录在哪)
anon_mkdir_write_enable=NO                (是否允许创建目录)
anon_other_write_enable=NO                        (是否允许写)

###重启一下vsftpd服务###

systemctl restart vsftpd

systemctl enable vsftpd                 ###将vsftpd服务设置为开机自启###

9、基于虚拟用户验证访问FTP服务的测试

###用Xftp7 登录ftp20.0.0.53,或者直接在文件地址栏中输入ftp://20.0.0.53发现登陆不了,会报一个500的错###

###这里会有个bug必须加上下面这句,新建一个john组,将用户john添加到john组中,shell描述改为程序账户才能登录##

groupadd john
adduser -g john -s /sbin/nologin john 

###然后再试###

就可以登录了。

尝试新建文件夹,有可能会报错,我做了两遍,第一遍直接可以新建,第二遍需要用下面的命令更改一下ftproot路径下的所有文件或文件夹的访问权限

chmod 777 -R /var/ftproot

改完之后就可以新建了

使用FTP协议的服务,包括匿名用户验证访问,用户验证访问,虚拟用户验证访问等相关推荐

  1. FTP(文件传输协议)及实验搭建详解(本地认证,虚拟用户,加密传输,限制登陆)

    文章目录 FTP传输协议及实验搭建详解 一.引子 二.FTP的原理和基本概念 三.FTP服务器实验构建(基础测试,本地认证,虚拟用户,加密传输,限制登陆) FTP传输协议及实验搭建详解 一.引子 终于 ...

  2. FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

    基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7R ...

  3. ftp(文件传输协议)服务

    1.ftp的定义 ftp://  ##文件传输协议 2.ftp协议提供的软件 在rhel7中:vsftpd 3.部署ftp服务 ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的 ...

  4. Linux中搭建FTP服务器,匿名用户访问、本地用户访问、虚拟用户访问(详细解答安装配置步骤)

    对于Linux搭建服务器步骤详解:可以基于匿名访问.本地用户访问.虚拟用户访问 FTP服务访问可分为三种 匿名用户:用户名为ftp或者anonymous,提供任意密码或无密码访问即可. 本地用户:要求 ...

  5. Ubuntu下同时搭建支持匿名、本地、虚拟用户的ftp服务器

    最近做助教,需要搭建一个ftp服务器.需求如下:需要一个stu.teacher.admin和匿名用户anon, 其中 anon可以自由的到特定的目录里下载东东: stu则可以到特定的目录里上传东东;  ...

  6. vsftpd服务安装与虚拟用户配置

    vsftpd的全名是"Very secure FTP Daemon" 一.安装vsftpd 安装db4-util用于生成认证文件 yum -y install db4-utils ...

  7. 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用...

    1.ftp协议及vsftpd的基本应用          文件共享服务:                  工作在应用层:ftp(file transfer protocol)             ...

  8. ftp协议及vsftpd的基本应用

    1.ftp协议及vsftpd的基本应用 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系 ...

  9. asc码转换 linux_Linux网络服务04——FTP文件传输服务

    Linux网络服务04--FTP文件传输服务 一.FTP连接及传输模式 1.控制连接:TCP 21,用于发送FTP命令信息 2.数据连接:TCP 20,用于上传.下载数据 3.数据连接的建立类型: ( ...

最新文章

  1. Linux下各类TCP网络服务器的实现源代码
  2. 深度分享 | 世界顶级语音识别科学家黄学东博士CCL 2018主旨报告(附PPT)
  3. Machine learning of neural representations of suicide and emotion concepts identifies suicidal youth
  4. Eclipse工作空间还原到最初状态
  5. VTK修炼之道79:交互与拾取_单位拾取
  6. java ee编译器_Java EE 8 MVC:控制器的详细介绍
  7. 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
  8. 概率论和数理统计 - 01
  9. favicon图标制作
  10. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
  11. oracle rac实例停止,oracle rac启停命令使用实例
  12. ASAv的qcow2镜像文件添加ASDM
  13. 机器学习基石 作业二
  14. python 中文字符串 编码转换_Python合集之Python字符串编码转换
  15. SpringBoot+POI方式导出excel【加水印】
  16. 涉密计算机设备保密管理系统,保密室设备——涉密计算机及移动存储介质保密管理系统(三合一)...
  17. 考研政治---马克思主义基本原理概论---认识论
  18. 北京大学网络教育学院计算机,北京大学继续教育部
  19. 软件测试面试中会问的几个方面
  20. LUOGU1438无聊的数列

热门文章

  1. 抖音热门涨粉小技巧,你值得拥有!
  2. 手机wap网站建置方案
  3. Oracle11g使用dbms_parallel_execute对大表进行并行update
  4. 关键词推广:如何选择更精准的关键词?
  5. 开个水果店的成本和利润,水果店净利润大概多少
  6. 【百度实习录】新人练习
  7. nova-week2
  8. 黑芝麻智能成为中兴通讯首家自动驾驶芯片合作伙伴;厦门第二家英迪格品牌酒店开业 | 美通企业日报...
  9. flex弹性布局教程-07容器属性flex-direction
  10. 入门51单片机(STC8952RC)定时器、有关中断原理简述、寄存器设置与程序示例(包括流水灯和计时器)