Day 18 文件服务器FTP

FTP介绍

文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务器端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接(21端口),主要用于控制FTP连接信息,同时再生成一个单独的TCP连接(20端口)用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

FTP服务器端软件

Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。


客户端软件
浏览器,资源管理器,ftp,lftp(推荐)

端口
建立tcp连接: 21;  传输数据:20;  1024+的随即端口;

FTP传输模式介绍
vsftpd的被动模式是默认开启的,可以关闭,主动模式永远开启,不能关闭

主动模式: 21端口负责连接,20端口负责传输数据
client server
1024-------->21 负责连接
1024<--------20 负责传输
高安全区域 防火墙 低安全区域

被动模式:client server
1024-------->21 负责会话连接
1024-------->1024+存放数据等待客户端来拿数据
使用什么模式连接服务器是客户端说了算
能不能接受那个模式是服务器说了算

服务器关闭被动模式
vim /etc/vsftpd/vsftpd.conf
pasv_enable=NO

客户端关闭被动模式
lftp 服务器端IP
> set ftp:passive-mode off

永久关闭客户端被动模式
vim /etc/lftp.conf
set ftp:passive-mode off


ftp的安全
1.关闭匿名用户除下载权限之外的一切权限
2.开启监控,也就是打开日志 /var/log/xferlog

安装ftp服务器端

准备工作:网络畅通,yum仓库可用,已关闭防火墙和selinux

①安装

yum -y install vsftpd

②启动服务并设置开机自启动

systemctl start vsftpd

systemctl enable vsftpd

③访问测试

ftp://服务器IP地址

如果ftp服务处于running状态,但是无法访问,检查防火墙和selinux是否已经关闭

FTP服务配置文件:/etc/vsftpd/vsftpd.conf

FTP默认对外共享文件夹:/var/ftp

FTP日志文件,记录用户的上传和下载:/var/log/xferlog

FTP服务器用户黑名单文件:/etc/vsftpd/ftpusers

FTP服务器用户黑白名单文件:/etc/vsftpd/user_list

安装ftp客户端

准备工作:网络畅通,yum仓库可用,已关闭防火墙和selinux

①安装

yum -y install lftp

②连接FTP服务器端

lftp FTP服务器端IP地址

ftp客户端相关操作

断开连接:exit

常规操作:ls  cd  

下载文件:get 文件名

下载目录:mirror 目录名

lftp无法下载ftp服务器端的文件/目录,可能是该文件/目录的权限问题

开启匿名用户的上传功能

①在对外共享目录下(默认为/var/ftp/)创建一个目录

给该目录写权限,在该目录内创建文件/目录

mkdir /var/ftp/upload

chmod 777 /var/ftp/upload/

②修改ftp配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

重新读取配置文件:systemctl restart vsftpd

③使用客户端上传文件

lftp 服务器端IP

cd upload/

上传文件:put 上传文件名(绝对路径)

上传目录:mirror -R 上传目录名(绝对路径)

注意:

对外共享文件夹本身并不能设置777权限,否则会报错

上传文件/目录之前,要切换进对应的目录

常用的匿名FTP配置项
anonymous_enable=YES   # 是否允许匿名用户访问
anon_umask=022   # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp   # 设置匿名用户的FTP根目录
anon_upload_enable=YES   # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES   # 是否允许匿名用户允许创建目录
anon_other_write_enable=YES   # 是否允许匿名用户有其他写入权(改名,删除,覆盖)
anon_max_rate=0   # 限制最大传输速率(字节/秒)0为无限制

更改ftp匿名用户对外共享目录

①在服务器端创建ftp指定对外共享目录

mkdir /tmp/ftp

②修改ftp配置文件

vim /etc/vsftpd/vsftpd.conf

在配置文件末尾加一行:anon_root=/tmp/ftp

重新读取配置文件:systemctl restart vsftpd

③验证

用服务器端在指定对外共享文件夹下( /tmp/ftp/)新建文件/目录

使用客户端lftp查看

启用FTP用户登录(普通用户)

①在服务器端添加用户和密码

useradd user01

passwd user01

②修改ftp配置文件

vim /etc/vsftpd/vsftpd.conf

local_enable=YES

(没开启的开启,本来就开着的不用管)

③在客户端普通用户登录

lftp 服务器端IP -u user01

Password:*****

普通用户默认对外共享目录为普通用户的家目录:/home/user01/

所以不同的普通用户对应着不同的对外共享目录

④验证

在服务器端用户的家目录下创建一个文件/目录touch /home/user01/u01

使用客户端lftp普通用户登录可以查看

常用的普通用户FTP配置项

local_enable=YES   # 是否允许本地系统用户访问
local_umask=022   # 本地用户所上传文件的权限掩码
local_root=/var/ftp   # 设置本地用户的FTP根目录
chroot_list_enable=YES   # 表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list   # 表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
chroot_local_user=YES   # 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0    # 限制最大传输速率(字节/秒)0为无限制

设定不同的普通用户使用同一个对外共享目录

①创建普通用户共享目录

mkdir /home/ftp

②修改ftp配置文件

vim /etc/vsftpd/vsftpd.conf

Local_root=/home/ftp

重新读取配置文件:systemctl restart vsftpd

③验证

在服务器端用户的家目录下创建一个文件/目录touch /home/ftp/test

使用客户端lftp不同的普通用户登录可以查看

开启普通用户上传功能

①在普通用户对外共享目录下(已被修改为/home/ftp/)创建一个目录,可以在该目录内创建文件/目录(给写权限)

mkdir /home/ftp/upload

chmod 777 /home/ftp/upload/

②修改ftp配置文件

vim /etc/vsftpd/vsftpd.conf

anon_upload_enable=YES

anon_mkdir_write_enable=YES

重新读取配置文件:systemctl restart vsftpd

③验证

使用客户端lftp普通用户登录可以在upload/目录下上传文件/目录

ftp服务黑白名单

ftp黑名单文件:/etc/vsftpd/ftpusers

注意:黑名单文件ftpusers  优先级高于  黑白名单文件user_list

ftp黑白名单文件:/etc/vsftpd/user_list 

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

在配置文件中添加一行参数:userlist_deny=YES/NO

当 userlist_deny=YES 时,/etc/vsftpd/user_list 为黑名单文件

用户在 user_list 文件中,则该用户不可以访问FTP

用户不在 user_list 文件中,则该用户可以访问FTP

当 userlist_deny=NO 时,/etc/vsftpd/user_list 为白名单文件

用户在 user_list 文件中,则该用户可以访问FTP

用户不在 user_list 文件中,则该用户不可以访问FTP

黑名单文件ftpusers  优先级高于  黑白名单文件user_list

userlist_deny=NO时,用户在 user_list 文件中的同时也在ftpusers中,仍然不可以访问FTP 

vsftpd.conf 配置文件参数详解

listen=YES   # 是否以独立运行的方式监听服务
listen_address=192.168.4.1   # 设置监听FTP服务的IP地址
listen_port=21   # 设置监听FTP服务的端口号
write_enable=YES   # 是否启用写入权限(上传,删除文件)
download_enable=YES   # 是否允许下载文件
dirmessage_enable=YES   # 用户切换进入目录时显示.message文件
xferlog_enable=YES   # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES   # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from_port_20=YES   # 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES   # 允许服务器被动模式
pasv_max_port=24600   # 设置被动模式服务器的最大端口号
pasv_min_port=24500   # 设置被动模式服务器的最小端口号
pam_service_name=vsftpd   # 用户认证的PAM文件位置(/etc/pam.d/vsftpd.vu)
userlist_enable=YES   # 是否启用user_list列表文件
userlist_deny=YES   # 是否禁用user_list中的用户
max_clients=0   # 限制并发客户端连接数
max_per_ip=0   # 限制同一IP地址的并发连接数
tcp_wrappers=YES   # 是否启用tcp_wrappers主机访问控制
chown_username=root   # 表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES   # 表示是否允许用户可以上传一个二进制文件,默认是不允许的
ascii_download_enable=YES   # 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd   # 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
async_abor_enable=YES   # 设定支持异步传输功能
ftpd_banner=Welcome to Awei FTP servers   # 设定Vsftpd的登陆标语
guest_enable=YES            # 设置启用虚拟用户功能
guest_username=ftpuser          # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES        # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf      # 设定虚拟用户个人Vsftp的配置文件存放路径

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值