vsftp文件服务,vsftpd基于mysql

今天来说三个文件共享服务,首先说一下vsftp,即为ftp(文件传输协议),vsftp非常安全的ftp,因为早期ftp是明文的,早期还不会有人来窃取数据,随着时代的发展,信息安全越来越受到重视,故ftp经过发展后出现了vsftp的版本。

ftp是一种应用层的服务,通常只能用于linux和linux之间或者linux即unix间文件共享,不能与windows之间文件共享。在应用层协议中监听于port21。为了使客户端与服务器端能够互动,而不仅仅是请求报文,ftp有两种数据,一种为命令连接,为文件管理类命令,还有一种是数据连接,用于数据传输。数据的请求方式如下:

主动:有服务器创建连接

命令: Client:50000 --> Server: 21

数据:Server : 20/tcp
-->  Client: 50000+

被动:由客户端创建连接

命令:Client:50000 --> Server: 21

数据:Client:   50000+1 -->
Server: 随机端口

在连接时会产生响应码,用于反馈信息连接的返回值:

1xx:信息

2xx:成功类的状态码

3xx:提示需进一步提供补充类信息的状态码

4xx:客户端错误

5xx:服务端错误

在Centos中使用的是vsftpd

需要首先安装vsftpd

yum
install vsftpd

用户认证配置文件:/etc/pam.d/vsftpd

服务脚本:/etc/rc.d/init.d/vsftpd

配置文件目录:/etc/vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

共享资源位置:/var/ftp

匿名用户(映射为ftp用户)共享资源位置:/var/ftp

系统用户通过ftp访问的资源的位置,用户自己的家目录

虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为系统的用户的家目录

启动服务 service vsftpd start

可以使用ss -tan查看是否监听21端口:

在使用ftp时有两种用户一种为系统用户,还有一种为匿名用户,当匿名用户访问时,会映射为ftp,共享资源为/var/ftp目录下。下面介绍了vsftpd的配置文件以及ftp用户的简介:

Centos 6.6下:

用户认证配置文件:/etc/pam.d/vsftpd

服务脚本:/etc/rc.d/init.d/vsftpd

配置文件目录:/etc/vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

共享资源位置:/var/ftp

匿名用户(映射为ftp用户)共享资源位置:/var/ftp

系统用户通过ftp访问的资源的位置,用户自己的家目录

虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为系统的用户的家目录

匿名用户登录,显示的是服务器端/var/ftp/目录下的文件,输入的用户名ftp,密码为空:

通过使用help可以获得帮助命令:

可以在windows下执行:

使用系统用户登录:

若想要上传文件至服务器端,需要将服务器端的配置文件中更改如下的权限,并且由于服务器端的/etc/ftp目录的权限都为root,需要创建一个目录,将文件夹权限中增加ftp:

在/etc/vsftpd/vsftpd.conf

匿名用户的配置:

anonymous_enable=YES

#anon_upload_enable=YES   是否允许匿名用户上传数据

#anon_mkdir_write_enable=YES  是否允许匿名用户创建目录

#anon_other_write_enable=YES  是否能删除文件

注意:在配置文件中,配置行需要顶格不能有空格;更改完配置文件后需重启服务。

增加ftp为upload的权限:

在客户端使用lcd命令切换至客户端的目录如/etc,使用put命令上传文件至服务器端upload,还能够添加删除目录如下:

系统用户的配置:

local_enable=YES

write_enable=YES

local_umask=022

禁锢所有的用户在家目录下,这样可以保障服务器端的安全性:

#chroot_local_user=YES

系统用户默认是有读写权限的,共享目录为家目录:

禁锢指定的ftp本地用户在家目录

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

如下11为用户限制,在chroot_list文件内,不能切换至别的目录,test则可以自由切换:

日志

xferlog_enable=YES

xferlog_std_format=YES

#xferlog_file=/var/log/xferlog

改变上传文件的属主:

#chown_uploads=YES

#chown_username=whoever

链接超时时长

#idle_session_timeout=600

数据链接超时时长

#data_connection_timeout=120

vsftpd使用pam完成用户认证,其用到的pam配置文件:

pam_service_name=vsftpd

是否启用控制用户登录的列表文件

userlist_enable=YES

userlist_deny=YES      默认 /etc/vsftpd/user_list

连接限制:

max_clients :  最大并发连接数;

max_per_ip:每个ip可同时发起的并发请求;

传输速率:

anno_max_rate : 匿名用户最大传输速率,单位是“字节/秒”

local_max_rate: 本地用户最大传输速率,单位是“字节/秒”

虚拟用户:

所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;

各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定;

虚拟用户账号的存储方式:

文件:编辑文件

奇数行为用户名

偶数行为密码

此文件需要被编码为hash格式;

关系型数据库中的表中:

即时查询数据库完成用户认证;

通过mysql与vsftp构建虚拟用户:

一、安装所需要程序

mysql库:

pam要依赖于pam-mysql

yum - install vsftpd pam_mysql
mysql-devel mysql-server

注意pam_mysql由epel源提供。

二、创建虚拟用户账号

1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

创建数据库vsftpd:

[[email protected] yum.repos.d]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> CREATE DATABASE vsftpd;

Query OK, 1 row affected (0.00 sec)

mysql> GRANT SELECT ON vsftpd.* TO  [email protected]‘172.16.%.%‘ IDENTIFIED BY ‘cd521709‘;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

首先创建数据库vsftpd,可以在客户端登陆查看服务器端的数据库:

[[email protected] pam.d]# mysql -uvsftpd -h172.16.249.108 -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MySQL [(none)]> SHOW DATABASES;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| test               |

| vsftpd             |

+--------------------+

3 rows in set (0.00 sec)

在服务器端创建table:

mysql> use vsftpd;

Database changed

mysql>  CREATE TABLE users (

->  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

-> name VARCHAR(50) BINARY NOT NULL,

-> password CHAR(48) BINARY NOT NULL );

Query OK, 0 rows affected (0.02 sec)

查看表内信息:

mysql> DESC
users;

+--------+------------------+------+-----+---------+----------------+

| Field  | Type             | Null | Key | Default |
Extra          |

+--------+------------------+------+-----+---------+----------------+

| id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

| name   | varchar(50)      | NO  
|     | NULL    |                |

| password |
char(48)         | NO   |    
| NULL    |                |

+--------+------------------+------+-----+---------+----------------+

3 rows in set (0.00
sec)

mysql> insert
into users(name,password) values(‘tom‘,password(‘magedu‘));

Query OK, 1 row
affected (0.00 sec)

mysql> insert
into users(name,password) values(‘jerrt‘,password(‘magedu‘));

Query OK, 1 row
affected (0.00 sec)

查看所有用户信息

mysql> SELECT *
FROM users;

+----+-------+-------------------------------------------+

| id | name  | password                                    |

+----+-------+-------------------------------------------+

|  1 | tom  
| *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |

|  2 | jerrt |
*6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |

+----+-------+-------------------------------------------+

2 rows in set (0.00
sec)

三、配置vsftpd

1.建立pam认证所需文件

在ftp服务器端,非mysql服务器端

#vim /etc/pam.d/vsftpd.mysql

添加如下两行

auth required pam_mysql.so user=vsftpd passwd=cd521709 host=172.16.249.108 db=vsftpd table=users usercolum=name passwdcolumn=password crypt=0

account required pam_mysql.so user=vsftpd passwd=cd521709 host=172.16.249.108 db=vsftpd table=users usercolum=name passwdcolumn=password crypt=0

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

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

# useradd -s /sbin/nologin -d /var/ftproot vuser   将创建的虚拟用户的家目录指定为/var/ftproot

# chmod go+rx
/var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

而后添加以下选项

guest_enable=YES

guest_username=vuser

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

如下为自己的配置:

pam_service_name=vsftpd.mysql

userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES

guest_username=vuser

可以使用windows中的cmd来登陆校验:

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

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

1、配置vsftpd为虚拟用户使用配置文件目录

#vim
/etc/vsftpd/vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config

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

# mkdir
/etc/vsftpd/vusers_config/

# cd
/etc/vsftpd/vusers_config/

# touch tom jerry

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

例tom文件中

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

则可上传、创建、删除文件:

例jerrt文件中

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

则不能上传、创建、删除文件

时间: 2024-10-07 14:37:09

vsftp文件服务,vsftpd基于mysql的相关文章

Vsftpd基于MySQL实现用户认证

ftp简介: ftp:File Transfer Protocol,文件传输协议:FTP是应用层协议,使用C/S架构,工作于20/tcp,21/tcp. FTP使用交互式访问模式,两个并行TCP连接,一个控制连接,一个数据连接,控制连接用于在客户机和服务器之间发送控制信息,比如用户和密码,改变远程目录和命令,上传下载文件等,数据连接用于真正发送数据.ftp有两种工作模式,主动模式(Active),被动模式(Passive). 数据: 命令连接:文件管理类命令,始终在线的连接 数据连接:数据传输,

vsftpd 基于mysql的虚拟账户

Centos7 vsftpd 基于MySQL的虚拟账户认证 实验环境: 两台虚拟机的防火墙和SELinux都已关闭 角色 IP vsftpd 192.168.148.7 mysql 192.168.148.17 系统账户 用户主目录 vuser /data/ftproot 虚拟账户 密码 用户主目录 ftp1 centos /data/ftproot/ftp1 ftp2 redhat /data/ftproot/ftp2 mysql服务器添加用户数据库 [[email protected] ~]

文件服务vsftpd,nfs,samba

文件服务 文件服务: 应用层:ftp 内核级网络文件系统:nfs 会话层的协议 跨平台的网络文件系统:cifs(samba) 网络存储: NAS:网络附加存储,文件系统级别的接口,共享存储的解决方案 SAN:存储取余网络,磁盘级别的块设备(要先分区)iscsi基于Internet的scsi 在专业级别的存储设备上提供远程服务 rpc远程过程调用 ftp:文件传输协议,基于tcp协议,21端口 奇葩 c/s架构协议   c <--> s   通过socket 三次握手四次挥手 命令连接 数据连接

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my

vsftpd基于mysql做虚拟用户认证

虚拟用户: 用户账号存储于何处? 文件,MySQL,Redis, ... vsftpd的认证功能托管给pam: Pluggable Authencate Module,认证框架,认证库: 通过模块完成认证功能:/usr/lib64/security/ pam_mysql模块: 下载pam_mysql的源码包官方下载http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz (1)准备编译安装环境 [[email pro

FTP服务(4)基于MySQL数据库认证

基于MySQL数据库认证 说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器 数据库服务器和FTP服务器系统都是CentOS7 注意:如果是CentOS6系统请执行yum install vsftpd pam_mysql命令安装连接组件 MariaDB服务器: yum install mariadb-server -y systemctl start mariadb mysql MariaDB [(none)]> CREATE DATABASE vsftpddb;

vsftpd基于mysql的认证方式

epel的yum源中有php-xcache 安装epel源: cd /etc/yum.repos.d wget http://mirrors.neusoft.edu.cn/epel/epel-release-latest-6.noarch.rpm rpm -ivh epel-release-latest-6.noarch.rpm 然后安装pam_mysql这个包: yum -y install pam_mysql [[email protected] yum.repos.d]# ll /lib6

搭建 FTP 文件服务vsftpd

安装并启动 FTP 服务 安装 VSFTPD 使用 yum 安装 vsftpd: yum install vsftpd -y vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其[官网介绍][https://security.appspot.com/vsftpd.html],它可能是 UNIX-like 系统下最安全和快速的 FTP 服务器软件. 启动 VSFTPD 安装完成后,启动 FTP 服务: service vsftpd start 启动后,可以看到系统已经[监听了 2

Mac 10.12通过Launchd创建自定义服务(基于MySQL 5.7.15的开机自启动)

在上一篇文章http://www.cnblogs.com/EasonJim/p/6275863.html中安装MySQL时采用的时DMG包的安装步骤页面进行安装的,如果这样安装的MySQL是会开机自启动,并且在系统设置中有MySQL关于服务方面的快速操作界面. 那么如果是基于二进制包安装的,如果要实现开机自启动,那么需要使用到Launchd进行服务的管理. 实现步骤: 1.在/Library/LaunchDaemons下新建com.oracle.oss.mysql.mysqld.plist的文件