使用FTP协议的服务,包括匿名用户验证访问,用户验证访问,虚拟用户验证访问等
目录
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协议的服务,包括匿名用户验证访问,用户验证访问,虚拟用户验证访问等相关推荐
- FTP(文件传输协议)及实验搭建详解(本地认证,虚拟用户,加密传输,限制登陆)
文章目录 FTP传输协议及实验搭建详解 一.引子 二.FTP的原理和基本概念 三.FTP服务器实验构建(基础测试,本地认证,虚拟用户,加密传输,限制登陆) FTP传输协议及实验搭建详解 一.引子 终于 ...
- FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户
基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7R ...
- ftp(文件传输协议)服务
1.ftp的定义 ftp:// ##文件传输协议 2.ftp协议提供的软件 在rhel7中:vsftpd 3.部署ftp服务 ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的 ...
- Linux中搭建FTP服务器,匿名用户访问、本地用户访问、虚拟用户访问(详细解答安装配置步骤)
对于Linux搭建服务器步骤详解:可以基于匿名访问.本地用户访问.虚拟用户访问 FTP服务访问可分为三种 匿名用户:用户名为ftp或者anonymous,提供任意密码或无密码访问即可. 本地用户:要求 ...
- Ubuntu下同时搭建支持匿名、本地、虚拟用户的ftp服务器
最近做助教,需要搭建一个ftp服务器.需求如下:需要一个stu.teacher.admin和匿名用户anon, 其中 anon可以自由的到特定的目录里下载东东: stu则可以到特定的目录里上传东东; ...
- vsftpd服务安装与虚拟用户配置
vsftpd的全名是"Very secure FTP Daemon" 一.安装vsftpd 安装db4-util用于生成认证文件 yum -y install db4-utils ...
- 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用...
1.ftp协议及vsftpd的基本应用 文件共享服务: 工作在应用层:ftp(file transfer protocol) ...
- ftp协议及vsftpd的基本应用
1.ftp协议及vsftpd的基本应用 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系 ...
- asc码转换 linux_Linux网络服务04——FTP文件传输服务
Linux网络服务04--FTP文件传输服务 一.FTP连接及传输模式 1.控制连接:TCP 21,用于发送FTP命令信息 2.数据连接:TCP 20,用于上传.下载数据 3.数据连接的建立类型: ( ...
最新文章
- Linux下各类TCP网络服务器的实现源代码
- 深度分享 | 世界顶级语音识别科学家黄学东博士CCL 2018主旨报告(附PPT)
- Machine learning of neural representations of suicide and emotion concepts identifies suicidal youth
- Eclipse工作空间还原到最初状态
- VTK修炼之道79:交互与拾取_单位拾取
- java ee编译器_Java EE 8 MVC:控制器的详细介绍
- 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
- 概率论和数理统计 - 01
- favicon图标制作
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
- oracle rac实例停止,oracle rac启停命令使用实例
- ASAv的qcow2镜像文件添加ASDM
- 机器学习基石 作业二
- python 中文字符串 编码转换_Python合集之Python字符串编码转换
- SpringBoot+POI方式导出excel【加水印】
- 涉密计算机设备保密管理系统,保密室设备——涉密计算机及移动存储介质保密管理系统(三合一)...
- 考研政治---马克思主义基本原理概论---认识论
- 北京大学网络教育学院计算机,北京大学继续教育部
- 软件测试面试中会问的几个方面
- LUOGU1438无聊的数列
热门文章
- 抖音热门涨粉小技巧,你值得拥有!
- 手机wap网站建置方案
- Oracle11g使用dbms_parallel_execute对大表进行并行update
- 关键词推广:如何选择更精准的关键词?
- 开个水果店的成本和利润,水果店净利润大概多少
- 【百度实习录】新人练习
- nova-week2
- 黑芝麻智能成为中兴通讯首家自动驾驶芯片合作伙伴;厦门第二家英迪格品牌酒店开业 | 美通企业日报...
- flex弹性布局教程-07容器属性flex-direction
- 入门51单片机(STC8952RC)定时器、有关中断原理简述、寄存器设置与程序示例(包括流水灯和计时器)