Linux&&ftp服务

FTP文件传输服务

vsftpd服务基础

FTP服务概述

ftp是文件传输协议,仅限于上传、下载文件,不支持创建文件。

FTP连接及传输模式是什么样的?
  • 控制连接 : 使用TCP协议的21端口,用于发送FTP命令信息
  • 数据连接 : 使用TCP协议的20端口,用于客户端与服务之间上传、下载数据。

数据连接的建立有以下两种建立模式:
主动模式 : 服务端从20端口主动向客户端发起连接
被动模式 : 服务端在指定范围内的某个端口被动等待客户端连接。
注:数据连接的使用端口在主动模式下建立时,是TCP的20端口;在被动模式下建立时,是TCP的随机端口号。

FTP服务的数据连接是被动模式建立的情况下,如何进行防火墙配置?
FTP服务的传输模式有哪几种?各是什么样的?

文本模式
ASCII模式,以文本序列传输数据
二进制模式
Binary模式,以二进制序列传输数据

文本模式和二进制模式在数据传输过程中自动协商、切换。

FTP服务的用户有哪几种类型?
  • 匿名用户 : anonymous 或 ftp。无法指明用户具体详细信息的用户。
  • 本地用户 : 将账号名称、密码等信息保存在服务器端的passwd、shadow文件中的用户。
  • 虚拟用户: 使用独立的账号、密码数据文件的用户
常见的FTP服务器程序有哪些?
  • IIS、Serv-U、wu-ftpd、Proftpd、vsftpd
  • IIS : windows系统中自带的服务.
  • Serv-U : 运行在windows系统环境中常见的ftp服务。
常见的FTP客户端程序有哪些?
  • ftp命令
  • cuteFTP,flashFXP,leapFTP,Filezilla
  • gftp,kuftp
启动软件服务时,为什么许多软件服务名后面有一个d?如httpd,vsftpd,dhcpd等。

d : 是Daemon的缩写,指守护进程。

守护进程 : 系统启动时,不需要用户登录即可运行的进程被称为守护进程。在后台运行的进程。

vsftpd的配置文件

在这里插入图片描述

centOS之FTP搭建步骤
#固化ip、关闭防火墙
#rpm安装vsftpd服务
rpm  -ivh  vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
#配置vsftpd配置文件
vim  /etc/vsftpd/vsftpd.conf
    #匿名用户允许访问
    anonymous_enable=YES
    #匿名用户上传允许
    anon_upload_enable=YES
    #匿名用户创建写入允许
    anon_mkdir_write_enable=YES
#重启服务生效
service  vsftpd  start
#查看匿名用户默认访问的目录
ls  /var/ftp/pub

/etc/vsftpd/ftpusers : 黑名单,禁止使用ftp服务的用户
/etc/vsftpd/user_list : 黑白名单,可以控制名单内用户自由的切换禁止、允许访问ftp的状态。
/etc/rc.d/init.d/vsftpd : 开机启动控制脚本
/etc/vsftpd/vsftpd.conf : ftp主配置文件
当白名单user_list功能启用时,仅在白名单user_list中出现的用户,才可访问ftp服务。
当白名单user_list功能未启用时,只要用户不在黑名单ftpusers 中,即可访问ftp服务。

在这里插入图片描述

022 : 指的是644权限掩码
对于ftp来说,其对文件不具备执行权限,所以默认是666。
anon_other_write_enable=YES : 指的是文件和目录的重命名、删除权限。

在这里插入图片描述

local_root=/var/ftp : 该功能可以设置普通用户在登录时看到目标目录,而非仅看到用户宿主目录。
chroot_local_user=YES : 指用户只能看到主目录。类似虚根目录的功能。

客户端如何访问FTP服务?
  • 客户端打开文件夹,在地址栏访问“ftp://192.168.1.100”即可。
  • 或 ftp:dfq@//192.168.1.100 : dfq是用户名。
  • 命令行模式下,执行“ftp 192.168.1.100”命令即可。
  • 客户端安装客户端软件输入FTP服务器地址、用户名、密码即可连接。

基于系统用户的FTP服务

匿名访问的FTP服务

准备匿名FTP访问的目录

在这里插入图片描述

默认支持匿名用户访问

开放匿名用户配置并启动vsftpd服务
测试匿名FTP服务器

用户验证的FTP服务

准备基本的本地用户验证

在这里插入图片描述
在这里插入图片描述

userlist_enable=YES : 启动黑白名单功能
userlist_deny=NO : 仅令黑白名单的白名单功能生效

使用user_list用户列表文件

vsftpd服务的其他常用配置

FTP使用示例

需求:
操作步骤:

#安装FTP软件包
#创建目标目录,意在将/home作为用户登录的根目录
mkdir  /home/caiwu
mkdir  /home/yewu
mkdir  /home/pub
#创建财务组,业务组
groupadd  caiwu
groupadd  yewu
#新建用户账号
useradd  -g  caiwu  cw-jl
useradd  -g  caiwu  cw1
useradd  -g  yewu  yw-jl
useradd  -g  yewu  yw1
#更改财务组目录权限
chown  cw-jl:caiwu  /home/caiwu
chmod  750  /home/caiwu
#更改业务组目录权限
chown  yw-jl:yewu  /home/yewu
chmod  750  /home/yewu
#更改共享组权限
chmod  o+wt  /home/pub
#配置vsftpd服务
vim  /etc/vsftpd/vsftpd.conf
    #禁止匿名用户登录访问
    anonymous_enable=NO
    #限制用户登录后的根目录
    local_root=/home
    chroot_local_user=YES
#重启服务生效
service  vsftpd  restart

基于虚拟用户的FTP服务

建立虚拟用户的账号数据库

虚拟用户:每个用户的 权限状态,访问位置均可独立设置。管理灵活。
虚拟用户仅能在FTP服务中使用。身份单一。
每个虚拟用户均有独立的配置文件,便于权限设置。

基于虚拟用户的FTP服务实现步骤
#创建账号数据
##建立虚拟FTP用户的账号数据库文件
### 建立虚拟用户的账号名、密码列表,注意用户前面不能留有空格!
vim  /etc/vsftpd/vusers.list
    dfq1    #奇数行为账号名
    123456  #偶数行为上一行中账号的密码
    dfq2    #奇数行为账号名
    123456  #偶数行为上一行中账号的密码
###安装db4-utils软件包,借助db_load转换工具,将列表转化为Berkeley DB格式的数据文件
cd  /etc/vsftpd/
db_load  -T  -t  hash  -f  vusers.list  vusers.db
#查看vusers.db文件类型
file  vusers.db
#更新虚拟用户文件权限,更改为只允许root用户读写。
chmod  600  /etc/vsftpd/vusers.*
##创建FTP根目录及虚拟用户映射的系统用户
###虚拟用户仅限于ftp环境中登录时验证使用;而在系统中对目录、文件、资源进行访问时,需要将虚拟用户切换或映射成系统用户使用。
####“/var/ftproot” :宿主目录,“virtual” : 虚拟用户名,“/sbin/nologin” : 不能从tty终端登录。
useradd  -d  /var/ftproot  -s  /sbin/nologin  virtual
chmod  755  /var/ftproot
##建立支持虚拟用户的PAM认证文件,"/etc/vsftpd/vusers"对应上面创建的vusers.db文件。
####“/etc/pam.d/vsftpd”代表本地用户如何验证的。
vim  /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.conf文件中添加支持配置
vim  /etc/vsftpd/vsftpd.conf
    anonymous_enable=no
    local_enable=YES
    write_enable=YES
    anon_umask=022
    guest_enable=YES
    guest_username=virtual
    pam_service_name=vsftpd.vu
##重启服务生效
service  vsftpd  restart

pam : 认证机制.
虚拟用户一旦启动,本地(系统)用户将不能使用,因为本地用户验证是通过pam验证的,本地用户文件与虚拟用户文件是同等的,本地用户与虚拟用户不能同时用于“pam_service_name”。会冲突。
在这里插入图片描述

##客户端使用虚拟用户登录vsftpd服务
#打开文件夹,访问“ftp://192.168.10.11”

为vsftpd服务添加虚拟用户支持

如何为不同的虚拟用户实现不同的文件配置?

在这里插入图片描述

#在vsftpd.conf文件中添加用户配置目录支持
vim  /etc/vsftpd/vsftpd.conf
    #添加不同用户独立配置目录的支持
    user_config_dir=/etc/vsftpd/vusers_dir

mkdir  /etc/vsftpd/vusers_dir
cd  /etc/vsftpd/vusers_dir
#为虚拟用户dfq1创建独立配置文件
vim  dfq1
    anonymous_enable=YES
    anon_umask=022
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_max_rate=0
    #local_root=/var/ftp1
vim  dfq2
    anonymous_enable=YES
    #匿名或虚拟用户上传到服务器的文件,文件权限是怎样的?
    anon_umask=022
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_max_rate=0
    #local_root=/var/ftp2
    

"anon_umask=022"可以确保不同权限的用户创建的文件,其他用户可读。

如何实现不同虚拟用户的根目录各不相同?
mkdir  /home/caiwu
mkdir  /home/yewu
chown  virtual.virtual  /home/caiwu
chown  virtual.virtual  /home/yewu
chmod  755  /home/caiwu
chmod  755  /home/yewu
cd  /etc/vsftpd
vim vusers.list
    cw-jl
    123456
    cw1
    123456
db_load  -T  -t  hash  -f  vusers.list  vusers.db
cd  /etc/vsftpd/vusers_dir
vim  cw-jl
    #此时用户cw-jl登录时,访问的目录是/home/caiwu,并且对该目录具备写权限
    local_root=/home/caiwu
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
  
客户端命令行登录ftp服务器后如何下载文件?
ftp  192.168.10.11
#查看客户端的当前路径
ftp>!pwd
#查看服务器端的当前路径
ftp>pwd
#切换客户端的当前路径到/tmp下.“l”代表local
ftp>lcd  /tmp
#从ftp服务器端下载文件ddd到客户端的当前路径下
ftp>get  ddd
#将客户端当前路径下的文件aaa上传到ftp服务器目录下
ftp> put  aaa
#使用mget从服务器下载多个文件到客户端当前路径,使用mput上传客户端当前路径下的多个文件到服务器端。
ftp>mget  ddd  aaa
#退出连接
ftp>by


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值