Linux Sever简单笔记(第十六堂课)之linux下FTP文件传输服务以及相关的文件配置

16章Linux下FTP文件传输服务

Linux下的FTP文件传输服务

vsftpd 服务基础

基于系统用户的 FTP服务

基于虚拟用户的 FTP服务

FTP 服务概述 

FTP连接及传输模式

控制连接:TCP 21,用于发送FTP命令信息

数据连接:TCP 20,用于上传、下载数据

数据连接的建立类型:

主动模式:服务端从 20 端口主动向客户端发起连接

被动模式:服务端在指定范围内某个端口被动等待客户端连接

FTP传输模式

文本模式:ASCII 模式,以文本序列传输数据

二进制模式:Binary 模式,以二进制序列传输数据

FTP 服务概述 

FTP 用户的类型 

匿名用户:anonymous ftp

本地用户:

帐号名称、密码等信息保存在 passwdshadow 文件中

虚拟用户:

使用独立的帐号/密码数据文件

常见的 FTP 服务器程序

⚫ IISServ-U

⚫ wu-ftpdProftpd

⚫ vsftpdVery Secure FTP Daemon

FTP 服务概述 

常见的 FTP 客户端程序

⚫ ftp 命令

⚫ CuteFTPFlashFXPLeapFTPFilezilla

⚫ gftpkuftp

Vsftpd 服务基础 

Vsftpd 软件包

官方站点:http://vsftpd.beasts.org/

主程序:/usr/sbin/vsftpd

服务名:vsftpd

用户控制列表文件

◆ /etc/vsftpd/ftpusers

◆ /etc/vsftpd/user_list

主配置文件

◆ /etc/vsftpd/vsftpd.conf

主配置文件 vsftpd.conf 3-1 

常用的全局配置项

⚫ listen=YES:是否以独立运行的方式监听服务

⚫ listen_address=192.168.4.1:设置监听的 IP 地址

⚫ listen_port=21:设置监听 FTP 服务的端口号

⚫ write_enable=YES:是否启用写入权限

⚫ download_enableYES:是否允许下载文件

⚫ userlist_enable=YES:是否启用 user_list 列表文件

⚫ userlist_deny=YES:是否禁用 user_list 中的用户

⚫ max_clients=0:限制并发客户端连接数

⚫ max_per_ip=0:限制同一 IP 地址的并发连接数

主配置文件 vsftpd.conf 3-2 

常用的匿名 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:限制最大传输速率(字节/秒)

主配置文件 vsftpd.conf 3-3 

常用的本地用户 FTP 配置项

⚫ local_enable=YES:是否启用本地系统用户

⚫ local_umask=022:本地用户所上传文件的权限掩码

⚫ local_root=/var/ftp:设置本地用户的 FTP 根目录

⚫ chroot_local_user=YES:是否将用户禁锢在主目录

⚫ local_max_rate=0:限制最大传输速率(字节/秒)

基于系统用户的 FTP 服务 

匿名访问

准备匿名FTP访问的目录

开放匿名用户配置并启动vsftpd服务

测试

用户验证

基本的本地用户验证

使用user_list用户列表文件

实验:

构建ftp

安装vsftp

启动ftp

添加到开机启动

检查端口

配置防火墙

启用防火墙端口

 

 

配置防火墙

 

设置临时关闭selinux

 

创建用户

查看ip地址

ifconfig

创建测试文件

客户端

检查是否有ftp

安装ftp

yum inastall -y ftp

测试允许哪些用户登录

匿名用户

查看

下载

退出

byb exist

使用jack用户

下载文件并改名

上传 并改名

退出

bybexit

构建可匿名上传的 FTP 服务器2-1 

准备匿名 FTP 访问的目录

使匿名用户 FTP 对该目录有写入权限

[root@centos7 ~]# ll /var/ftp/

drwxr-xr-x 2 root root 6 1031 2018 pub

[root@centos7 ~]# mkdir /var/ftp/upload

[root@centos7 ~]# chown ftp.ftp /var/ftp/upload/

[root@centos7 ~]# ll /var/ftp/

drwxr-xr-x 2 root root 6 1031 2018 pub

drwxr-xr-x 2 ftp ftp 6 1024 22:51 upload

注意:不要修改系统默认的目录结构和属性,新创建上传目录

实验:

服务器

创建upload

查看系统文件

更改属主属组

 

 

配置文件允许匿名用户上传修改文件

备份

构建可匿名上传的 FTP 服务器2-1 

开放匿名用户配置,并启动 vsftpd 服务

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

12 anonymous_enable=YES

29 anon_upload_enable=YES

33 anon_mkdir_write_enable=YES

129 anon_other_write_enable=YES

[root@centos7 ~]# systemctl restart vsftpd

打开配置文件

添加掩码

 

 

 

添加配置

测试匿名 FTP 服务器 

使用 ftp 客户端程序访问测试

客户端验证

上传文件

发现失败

upload成功

 

服务器

编辑配置文件,本地用户

 

 

 

 

 

 

另一个终端

用户控制列表文件(不允许)

 

黑白名单

构建本地用户验证的 FTP 服务器5-1 

创建本地用户ftp访问目录

[root@centos7 ~]# mkdir /localftp

[root@centos7 ~]# mkdir /localftp/jack /localftp/rose

[root@centos7 ~]# chmod -R o+t /localftp/

[root@centos7 ~]# chown jack.jack /localftp/jack/

[root@centos7 ~]# chown rose.rose /localftp/rose

[root@centos7 ~]# chmod 700 /localftp/*

构建本地用户验证的 FTP 服务器5-2 

修改 vsftpd.conf 配置文件

启用本地用户访问

[root@centos7 ~]# vi /etc/vsftpd/vsftpd

12 anonymous_enable=NO

16 local_enable=YES

101 chroot_local_user=YES

102 chroot_list_enable=YES

103 # (default follows)

104 chroot_list_file=/etc/vsftpd/chroot_list

105 local_root=/localftp

127 userlist_enable=YES

130 userlist_deny=NO

131 allow_writeable_chroot=Yes

构建本地用户验证的 FTP 服务器5-3 

修改 vsftpd.conf 配置文件

结合user_list文件灵活控制用户访问

[root@centos7 ~]# echo jack > /etc/vsftpd/user_list

[root@centos7 ~]# echo rose >> /etc/vsftpd/user_list

结合chroot_list文件灵活锁定用户的访问目录

[root@centos7 ~]# echo jack > /etc/vsftpd/chroot_list

服务器

另一个终端

编辑chroot文件

加入jack

另一个配置文件

加入rosejack

构建本地用户验证的 FTP 服务器5-4 

重新启动vsftpd 配置,并进行测试

测试user_list的效果

[root@centos7 ~]# systemctl restart vsftpd

连接到 192.168.1.20

220 (vsFTPd 3.0.2)

200 Always in UTF8 mode.

用户(192.168.1.20:(none)): tom

530 Permission denied.

登录失败。

构建本地用户验证的 FTP 服务器5-5 

重新加载 vsftpd 配置,并进行测试

重启服务

客户机

测试

测试rose

 

测试jony

vsftpd 服务的其他常用配置5-1 

修改 vsftpd 服务的监听地址、端口

listen=YES

listen_address=192.168.4.11

listen_port=2121 

允许使用 FTP 服务器的被动模式

pasv_enable=YES

pasv_min_port=24500

pasv_max_port=24600

vsftpd 服务的其他常用配置2-2 

限制 FTP 连接的并发数、传输速率

max_clients=20

max_per_ip=2

anon_max_rate=50000

local_max_rate=200000 单位是

构建基于虚拟用户的 FTP 服务 

创建帐号数据

建立虚拟FTP用户的帐号数据库文件

创建FTP根目录及虚拟用户映射的系统用户

建立支持虚拟用户的PAM认证文件

添加虚拟用户支持

vsftpd.conf文件中添加支持配置

为个别虚拟用户建立独立的配置文件

启动服务并测试

重新加载vsftpd配置

使用虚拟ftp帐户访问测试

实验:

服务器

创建虚拟用户,并且指定宿主目录

创建测试文件

更改文件权限

 

创建账号数据3-1 

建立虚拟 FTP 用户的帐号数据库文件

建立虚拟用户的账户名、密码列表

奇数行为帐号名

偶数行为上一行中帐号的密码

[root@centos7 ~]# vi /etc/vsftpd/vusers.list

1 tom

2 123

3 jerry

4 123

创建文本文件

添加两个用户

Tom

密码

Jerry

密码

创建账号数据3-2 

建立虚拟 FTP 用户的帐号数据库文件

转化为 Berkeley DB 格式的数据文件

◆ db_load 转换工具

需安装 db4-utils 软件包

[root@centos7 ~]# cd /etc/vsftpd/

[root@centos7 vsftpd]# db_load -T -t hash -f vusers.list vusers.db

[root@centos7 vsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 9, native byte-order)

[root@centos7 vsftpd]# chmod 600 /etc/vsftpd/vusers.*

[root@centos7 vsftpd]# ll vusers.*

-rw------- 1 root root 12288 1027 22:43 vusers.db

-rw------- 1 root root 18 1027 22:42 vusers.list

查看文件属性

 

修改文件权限

查看

创建账号数据3-3 

创建 FTP 根目录及虚拟用户映射的系统用户

[root@centos7 vsftpd]# useradd -d /vusersftp -s /sbin/nologin virtual

[root@centos7 vsftpd]# chmod -Rf 755 /vusersftp/

[root@centos7 vsftpd]# ll -d /vusersftp/

drwxr-xr-x 2 virtual virtual 62 1027 22:45 /vusersftp/ 

建立支持虚拟用户的 PAM 认证文件

[root@centos7 vsftpd]# vi /etc/pam.d/vsftpd.vu

1 #%PAM-1.0

2 auth required pam_userdb.so db=/etc/vsftpd/vusers

3 account required pam_userdb.so db=/etc/vsftpd/vusers

编辑配置文件

Pam认证文件

 

添加虚拟用户支持2-1 

vsftpd.conf 文件中添加支持配置

[root@centos7 vsftpd]# vi /etc/vsftpd/vsftpd.conf

12 anonymous_enable=NO

16 local_enable=YES

129 guest_enable=YES

130 guest_username=virtual

131 pam_service_name=vsftpd.vu

132 allow_writeable_chroot=YES

进行备份---编辑配置文件

 

 

 

在客户机上测试

添加虚拟用户支持2-2 

为不同的虚拟用户建立独立的配置文件

vsftpd.conf 文件中添加用户配置目录支持

[root@centos7 vsftpd]# vi /etc/vsftpd/vsftpd.conf

133 user_config_dir=/etc/vsftpd/vusers_dir

为用户 tomjerry 建立独立的配置目录及文件

配置文件名与用户名相同

[root@centos7 vsftpd]# mkdir /etc/vsftpd/vusers_dir

[root@centos7 vsftpd]# touch /etc/vsftpd/vusers_dir/tom

[root@centos7 vsftpd]# vi /etc/vsftpd/vusers_dir/jerry

1 anon_upload_enable=YES

2 anon_mkdir_write_enable=YES

3 anon_other_write_enable=YES

服务器第二个终端

创建tom

编辑文件

 

启动服务并测试 

重新加载 vsftpd 配置

[root@centos7 vsftpd]# systemctl start vsftpd 

使用虚拟 FTP 账户访问测试

⚫ tom 用户可以登录,并可以浏览、下载,但无法上传

⚫ jerry 用户可以登录,并可以浏览、下载,也可以上传

匿名用户或其他系统用户将不能登录

实验:

重启服务

客户机验证

 

 

 

原文地址:https://www.cnblogs.com/yxd1308243944/p/13986265.html