linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)

基础知识:

一、ftp服务概述:

1、FTP连接及传输模式
A、控制连接: TCP21,用于发送FTP命令信息
B、数据连接: TCP20,用于上传、下载数据
C、数据连接的建立类型:
主动模式:服务端从20端口主动向客户端发起连接
被动模式: 服务端在指定范围内某个端口被动等待客户端连接
2、FTP传输模式
A、文本模式: ASCII模式,以文本序列传输数据
B、二进制模式: Binary 模式,以二进制序列传输数据
注意:二进制模式、可以传音频等(一般使用这个)
文本模式只能传输文本文件
3、FTP用户的类型
A、匿名用户: anonymous或ftp (:注意)
B、本地用户:
帐号名称、密码等信息保存在passwd、shadow 文件中
C、虚拟用户:
使用独立的帐号/密码数据文件
4、常见的FTP服务器程序
IIS、Serv-U
wu-ftpd、Proftpd
vsftpd (Very Secure FTP Daemon)
5、常见的FTP客户端程序
ftp命令
CuteFTP、 FlashFXP、LeapFTP、Filezilla
gftp、kuftp

二、Vsftpd服务基础

Vsftpd软件包
A、官方站点: http://vsftpd.beasts.org/
B、主程序: /usr/sbin/vsftpd
C、服务名: vsftpd
D、用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
E、主配置文件
/etc/vsftpdl/vsftpd.conf
补充:
/var/ftp:是ftp的属主目录
/var/ftp/pub:是ftp启动后的默认目录

三、配置文件中部分命令意识

anonymous enable=YES:允许匿名用户登录
local_enable=yes:是否允许本地用户登录
write_enable=yes:允许写入
local_umask=022:你创建文件夹的默认掩码(对应权限为755)
anon_upload_enable=yes:是否允许用户上传
anon_mkdir_write_enable=YES:是否允许匿名用户创建文件夹
userlist_enable=yes:用户限制

实验:

前提:
1、ftp服务端下载安装ftp
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第1张图片
2、客户端下载安装ftp客户端
在这里插入图片描述

实验一:匿名用户登录

A、ftp服务端(192.168.8.166)
1、进入ftp配置文件并修改
以下为ftp服务端的配置文件内容
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第2张图片
2、将var/ftp/pub权限修改为777
#chmod 777 /var/ftp/pub
3、打开ftp服务:
service vsftpd start

B、客户端:
1、登录到对方ftp下
#ftp 192.168.8.166
2、操作
A、上传文件:put 文件名
B、下载文件:get 文件名
C、创建目录:mkdir 目录名
D、删除文件:del 文件名
E、删除文件夹:rmdir 文件夹

注:客户端只能在pub目录下上传文件、不能上传和下载目录(文件夹)
如要是客户端有删除的权限,则需要在ftp服务端的配置文件中加入anon_umask=022
在这里插入图片描述
匿名用户登录最多能返回的路径:var下

实验二:基于用户登录

A、ftp服务端(192.168.8.166)
1、进入ftp配置文件并修改
以下为ftp服务端的配置文件内容
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第3张图片
2、添加用户并设置密码
在这里插入图片描述
B、客户端
1、登录
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第4张图片
此时登录后的位置:用户的宿主目录
结果:可以访问系统的所有文件
后果:不安全

小实验:用户隔离(解决安全问题)
1、在以上的基础上修改配置文件----
在这里插入图片描述
2、则所有的用户都会被限制在自己的宿主目录下
以下是整个配置文件的内容
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第5张图片

小实验:部分隔离(使特定用户可以访问系统目录、其他用户则被限制在自己的宿主目录下)
1、将chroot_list_file=/etc/vsftpd/chroot_list 打开:如下
在这里插入图片描述
2、在/etc/vsftpd/chroot_list中编写特定用户(即在这文件中的用户可以查看系统目录)
在这里插入图片描述
以下是整个配置文件的内容
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第6张图片

实验三:虚拟用户----用户映射

A:客户端
1、随便在/etc/vsftpd下取一个文件名,在里面写入被映射的用户名和密码
在这里插入图片描述
2、写完后将他们转换为加密的数据库(将文件转换为数据库,数据库名要与文件名一样)
在这里插入图片描述
转换完后查看是否是一个数据库
在这里插入图片描述
3、设置权限,使数据库可以被读取
在这里插入图片描述
4、创建一个不能登录的用户(此用户则是映射的用户)
在这里插入图片描述
5、给他ftp/ftp的权限为755:
在这里插入图片描述
6、将vusers.db数据库中的用户映射到新建的ftpyuan用户上
a、在etc/pam.d下新建一个文件(本来存在一个名叫vsftpd,这里做不依赖他的 故自己新建一个文件名字只要区分于他就ok)
b、在此文件中写入内容:如下图(db后跟的是用户数据库的路径,去掉db)
在这里插入图片描述
文件内容:
在这里插入图片描述
7、将users.*权限修改为600
在这里插入图片描述
8、如果需要写入则将/var/ftp下所有权限改777
在这里插入图片描述
配置文件中内容:
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第7张图片
注:local_enable要为yes、write_enable为yes、需要anon_umask=022

B、客户端
1、用用户数据库中的用户登录到对方ftp中,写入数据(创建目录)
2、验证,在/var/ftp/ftp下看被创建的目录的宿主是否是映射用户
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第8张图片

实验四:虚拟用户----权限分配

A、ftp服务端
1、在配置文件中添:user_config_dir=/etc/vsftpd/vuser.dir
2、在vsftpd下创建目录mkdir vuser.dir
进入文件夹 创建一个与用户名同名的文件(ftp2)并写入数据
在这里插入图片描述
在创建一个 ftp3文件 但是不写入内容
配置文件中主要内容:
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第9张图片
注:将配置文件中的是否允许上传和是否允许写入都改为NO

B、客户端
检验:用ftp2和ftp3分别登录 创建目录
结果:ftp2用户可以创建目录,ftp3用户不可以创建目录

实验五:通过ftp上传主页

A、ftp服务端:
1、安装http:
在这里插入图片描述
2、修改配置文件:主要修改用户映射为guest_username=apache(因为http的宿主是apache)
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第10张图片
配置文件内容:
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第11张图片
B、客户端
登录查看
linux下vsftp服务的搭建(匿名用户登录、基于用户登录---用户隔离和部分用户隔离、虚拟用户---用户映射和权限分配、通过ftp上传主页)_第12张图片
注意:以上的实验是从实验一开始做的,导致后面有些实验的配置文件中不需要的命令也出现了,但是不影响。可根据实际情况进行修改

你可能感兴趣的:(linux,ftp)