Linux上FTP部署:基于mariadb管理虚拟用户

FTP原理

FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序。图1 FTP 的基本模型

FTP 是基于客户———服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接。

开发任何基于 FTP 的客户端软件都必须遵循 FTP 的工作原理,FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应),这种将命令和数据分开传送的思想大大提高了 FTP 的效率,而其它客户服务器应用程序一般只有一条 TCP 连接。图 1 给出了 FTP 的基本模型。客户有三个构件:用户接口、客户控制进程和客户数据传送进程。服务器有两个构件:服务器控制进程和服务器数据传送进程。在整个交互的 FTP 会话中,控制连接始终是处于连接状态的,数据连接则在每一次文件传送时先打开后关闭。

FTP客户端发起FTP会话,与FTP服务器建立相应的连接。FTP会话期间要建立控制信息进程与数据进程两个连接。控制连接不能完成传输数据的任务,只能用来传送FTP执行的内部命令以及命令的响应等控制信息;数据连接是服务器与客户端之间传输文件的连接,是全双工的,允许同时进行双向数据传输。当数据传输完成后,数据连接会撤消,再回到FTP会话状态,直到控制连接被撤消,并退出会话为止。

FTP主动被动模式

FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。

PORT主动模式

FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

命令传输:

Client:N 随机端口 ---> Server:21

数据传输:

CLient:N+1 <--- Server:20

Passive被动模式

建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。

命令传输:

Client:N --- Server:21

服务器告诉客户端121,23端口进行数据连接: 121*256+23=30999

数据传输:

CLient:N+1 --- Server:30999

FTP部署实战:基于mysql管理虚拟用户方式

1、安装环境

CentOS7

2、安装程序包

1、安装数据库
# yum –y install mariadb-server

2、ftp服务端:
# yum -y groupinstall "Development Tools"
# yum -y install mariadb-devel pam-devel vsftpd

3、编译安装pam_mysql包
手动下载pam_mysql-0.7RC1.tar.gz(http://pam-mysql.sourceforge.net/)
# yum -y groupinstall "Development Tools"    #安装开发包组
# tar xvf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1/
# ./configure --with-pam-mods-dir=/lib64/security
# make && make install

3、创建虚拟用户账号

主备数据库相关表

启动mariadb数据库
# systemctl start mariadb

登录mariadb创建数据库和管理员账号
# mysql
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by ‘123456‘;
mysql> flush privileges;

mysql> use vsftpd;
create table users (
id int AUTO_INCREMENT NOT NULL,
name char(50) binary NOT NULL,
password char(48) binary NOT NULL,
primary key (id)
);

添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,为了安全起见密码应该使用PASSWORD函数加密后存储
mysql> insert into users(name,password) values(‘tom‘,password(‘123456‘));
mysql> insert into users(name,password) values(‘jerry‘,password(‘111111‘));

4、配置vsftpd

建立pam认证所需文件

#vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

配置说明:

auth:表示认证

account:验证账号密码正常使用

required :表示认证要通过

pam_mysql.so:模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为 给此模块传递的参数

user=vsftpd :为登录mysql的用户

passwd=123456 : 登录mysql的的密码

host=127.0.0.1 :mysql服务器的主机名或ip地址

db=vsftpd : 指定连接msyql的数据库名称

table=users : 指定连接数据库中的表名

usercolumn=name :当做用户名的字段

passwdcolumn=password :当做用户名字段的密码

crypt=2 : 密码的加密方式为mysql password()函数加密

修改vsftpd的配置文件,使其适应mysql认证

# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO   #最好关闭匿名用户

最后后添加以下选项
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql
user_config_dir=/etc/vsftpd/vusers_config.d

5、配置虚拟用户具有不同的访问权限

创建所需要目录,并为虚拟用户提供配置文件

# mkdir /etc/vsftpd/vusers_config.d/
# cd /etc/vsftpd/vusers_config.d/
# touch tom jerry

配置虚拟用户的访问权限

创建第一个测试用户tom的配置文件
# vim tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/ftp/tom

创建第二个测试用户jerry的配置文件
# vim tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/ftp/jerry

建立虚拟用户映射的系统用户及对应的目录

# useradd -s /sbin/nologin -d /ftp vuser         #创建系统用户
# chmod 555 /ftp
# mkdir -p /ftp/tom/upload         #创建tom用户的文挡目录
# setfacl -m u:vuser:rwx /ftp/tom/upload/      #添加权限
# mkdir -p /ftp/jerry/upload      #创建jerry用户的文挡目录
# setfacl -m u:vuser:rwx /ftp/jerry/upload/    #添加权限

6、启动服务测试

启动ftp服务

# systemctl start vsftpd

其他客户端登录测试

# ftp x.x.x.x

原文地址:https://www.cnblogs.com/ysuwangqiang/p/11957879.html

时间: 2024-08-04 19:43:23

Linux上FTP部署:基于mariadb管理虚拟用户的相关文章

FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制

前言 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用,目前在开源操作系统中常用的FTP套件主要有proftpd.pureftp.ServU和wu-ftpd等.本文将讲解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB实现虚拟用户访问控制. 基础配置介绍 工作原理 状态响应码 1xx:信息码 2xx:成功状态码 3xx:进一步提示补全信息的状态码 4xx:客户端错误 5xx:服务器端错误 用户认证 虚拟用户:仅用于访问某特定服务中的资源

Kibana在Linux上安装部署及使用说明

Kibana安装及使用说明 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据. 官方地址:https://www.elastic.co/cn/products/kibana 一.Kibana安装1.环境准备 Kibana是ElasticSearch的可视化平台,依赖ElasticSearch,需要优先安装ElasticSearch. 示例:ElasticSearch在Linux上安装部署 2.Kibana下载

Centos FTP服务器的原理以及虚拟用户的配置

前面笔者写过一篇"FTP本地用户"随笔,那只是一个案例,并没有完整的写出来作用.配置文件解析和原理,今天笔者将发布"FTP服务器的原理以及虚拟用户的配置"随笔 FTP服务的原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一 现在也一直有在用着FTP协议来进行各种文件的传输,FTP为人们提供了一种可靠的方式在网络上进行文件的共享 FTP是C/S架构的服务,拥有一个

vsftpd基于pam_mysql的虚拟用户认证

1.ftp用户 匿名用户:映射到某一个固定的系统用户,例如(ftp,vsftp,/var/ftp) 本地用户:系统用户,root及系统用户(0-999) 虚拟用户:nsswitch: name services switch  名称服务转换 PAM: Plugabl Plugable Authentication Modules  插入式认证模块本文主要讲解vsftpd基于pam_mysql的虚拟用户认证步骤. 2.准备环境 操作系统 主机名 IP地址 环境描述 CentOS 7.1 ch7 1

vsftpd的基于pam_mysql的虚拟用户机制

虚拟用户:是ftp中常用的一种策略,因为ftp服务古老而且不安全,使用匿名用户不能有效的控制权限,而本地用户可以登录操作系统,极为不安全,所以引入了虚拟用户的概念,其只是将多个虚拟用户映射为一个本地用户,此用户可以设置不允许登录,从而加强了系统的安全性,本问主要介绍基于mysql的虚拟用户 配置pam_mysql 下载地址:pam-mysql.sourceforge.net # yum -y  groupinstall  "Development Tools" "Server

vsftpd基于pam_mysql的虚拟用户机制

一.虚拟用户概述 vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户.系统用户.虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文件资源都有各自的权限,只有操作系统上的用户才能根据权限模型判断是否能够访问该文件资源.这里仅介绍vsftpd基于pam_mysql的虚拟用户机制的使用. 二.vsftpd基于pam_mysql的虚拟用户机制 1.编译安装pam_mysql (1) 编译pam_mysql前要提供开发环境,并安

vsftpd的基于pam_mysql的虚拟用户配置示例 &nbsp; &nbsp; &nbsp;

第一步:安装vsftpd和mariadb ~]# yum install mariadb-server ~]# yum install vsftpd 因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动,需要编译安装pam_mysql这个模块. 准备编译环境 安装Development Tools 和 service platform Development这两个包组,另外需要安装依赖到的开发包pam-devel,openssl-devel,mariadb

vsftp基于mysql的虚拟用户,iptables的用法

vsftp基于mysql创建虚拟用户 1.首先安装环境 yum groupinstall -y "Development Tools" "Server PlatformDevelopment" yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 下载最新的pam-mysql http://pam-mysql.sourceforge.net/ 编译安装pam-mysql tar x

创建vsftpd的基于pam_mysql的虚拟用户机制

在centos7系统上实现搭建vsftp服务,基于pam_mysql的虚拟用户机制: 编译安装pam_mysql 准备环境: ]# yum -y groupinstall "Development Tools" "server Platform Development" ]# yum -y install pam-devel openssl-devel mariadb-devel mariadb-server ]# yum -y install vsftpd 解压p