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;

mysql> grant select on vsftpd.* to ‘vsftpd‘@‘192.168.1.110’ identified by ‘vsftpd‘;

mysql> flush privileges;

mysql> use vsftpd;

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

2,添加虚拟用户

  mysql> insert into users(name,passwordvalues(‘test‘,password(‘test‘));

  注意:此处对应的加密方法是基于PASSWORD函数加密后存储

三,配置vsftpd

1,创建vsftpd通过PAM模块和mysql认证时所需要的文件:

vim /etc/pam.d/vsftpd.mysql

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.1.110 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.1.110 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

此处可能会遇到的问题:

1)pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,,授权一个远程连接的mysql并访问vsftpd数据库的用户会避免此问题出现。

通过查看日志文件/var/log/secure可能出现如下问题:server vsftpd[20453]: pam_mysql - MySQL error (Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘

2)crypt=Num中 Num=0:表示不加密;Num=1:表示incrypt;Num=2:表示基于mysql的PASSWORD函数;Num=3:表示基于MD5认证。

此处创建虚拟用户时基于PASSWORD函数,所以crypt=2;

否则通过查看日志文件/var/log/secure可能出现如下问题:vsftpd[23068]: pam_mysql - SELECT returned no result. 密码匹配不正确,查询不到结果。

2,修改vsftpd的配置文件,使其适应mysql认证,建立虚拟用户映射的系统用户及对应的目录

useradd -s /sbin/nologin -d /var/homeftp vuser

chmod go+rx /var/homeftp   #确保属组用户和其他用户对vuser目录有r,x权限

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

local_enable=YES                           #此处必须为YES,否则登录失败

write_enable=YES

chroot_local_user=YES                      #将用户禁锢在其家目录中

添加以下选项

guest_enable=YES                           #启用后所有的非匿名登入者都视为guest_username定义的用户登录

guest_username=vuser                       #虚拟用户通过映射到vuser用户登录

user_config_dir=/etc/vsftpd/vusers_config  #虚拟用户的配置文件在此目录下定义

pam_service_name=vsftpd.mysql              #pam模块连接mysql时认证文件

3,配置虚拟用户具有不同的访问权限

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

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

# mkdir /etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch test

2)配置虚拟用户的访问权限

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

选项如下:

anon_upload_enable={YES|NO}        #虚拟用户是否具有上传权限

anon_mkdir_write_enable={YES|NO}  #虚拟用户是否具有创建权限

anon_other_write_enable={YES|NO}  #虚拟用户是否具有除上传,创建之外的其他权限

anon_umask=022                        #虚拟用户上传文件权限(文件:666-022)(目录:777-022)

遇到的问题:

因为vsftp默认情况是工作在passive 模式下,连接进去后,敲命令后,出现227 然后卡在那边。

这是因为iptables把服务器开发给客户端的端口禁了,可以用passive关闭被动模式,进入主动模式。

还有一种方法就是在vsftpd.conf中增加分配传输数据的随机端口:

pasv_min_port=50000

pasv_max_port=50999

然后增加iptables规则:

iptables -I INPUT 3 -p tcp  --dport 50000:50999 -j ACCEPT

时间: 2024-08-04 02:31:20

Centos6下vsftpd基于mysql认证创建虚拟用户的相关文章

CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享

FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台. LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 通常,访问FTP服务器时需

安装vsftpd+pam+mysql实现对虚拟用户身份认证功能

安装vsftpd+pam+mysql来实现对虚拟用户身份认证功能 事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的:mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28.这里不再介绍安装步骤,前面已经详细介绍过.由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能. 一.安装所需要程序 1.事先安装好开发环境和m

vsftpd基于数据库文件实现虚拟用户管理站点目录

vsftpd基于数据库文件来实现虚拟用户管理站点目录: ftp授权单个系统用户管理(此用户要禁止登陆服务器),虚拟出多个虚拟用户来管理不同的站点目录 一环境:(1)关闭selinux,centos6.8 x_86_64开启防火墙,放开ftp的端口 (2).存放虚拟用户的密码文件[[email protected] vsftpd]# cat /etc/vsftpd/vsftpd_logindrxiaowu ##账户ZkJxu55rt9 ##密码yanyonGZk&aO=+w09xiaowuZk&am

Linux下vsftpd安装以及配置FTP虚拟用户实践

首选的FTP服务器搭建方式 安装vsftpd #查看当前系统版本 cat /etc/redhat-release  CentOS release 6.6 (Final)  #查看是否已经安装vsftpd rpm -qa | grep vsftpd #如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on 基于虚拟用户的配置 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟用户不能登录CentOS系统.

搭建FTP-----实现基于mysql验证的虚拟用户

前言: 在上一篇博客中,我们已经实现了基于文件认证的ftp服务,不过此方法也存在不少问题,比如过用户数据不好管理呀,以明文存储不安全呀.不能把用户数据单独存放在其他服务器呀等等.所以此次我们把用户数据放在mysql中,然后通过pam模块去mysql中找用户数据来实现认证.主体的过程和上篇区别不大~那我们就开始把~ 正文: 此次,我们的环境是centos6,因为centos7中的pam_mysql模块得自己手动编译,所以就先使用centos6,不过两者区别也不大,而且编译pam_mysql模块也不

vsftp文件服务,vsftpd基于mysql

今天来说三个文件共享服务,首先说一下vsftp,即为ftp(文件传输协议),vsftp非常安全的ftp,因为早期ftp是明文的,早期还不会有人来窃取数据,随着时代的发展,信息安全越来越受到重视,故ftp经过发展后出现了vsftp的版本. ftp是一种应用层的服务,通常只能用于linux和linux之间或者linux即unix间文件共享,不能与windows之间文件共享.在应用层协议中监听于port21.为了使客户端与服务器端能够互动,而不仅仅是请求报文,ftp有两种数据,一种为命令连接,为文件管

centos7 安装vsftpd安装和配置以及虚拟用户权限分配

系统环境 centos7.3 版本 ftp 根目录 : /data/ftpftp 配置文件目录:/etc/vsftpdftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config 实现目标: 1,匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录2,虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作 1,安装vsftpd和db_load加密工具 1 2 3 4 5 6 #要关闭selinux 和防火墙或者开启允许的端口,不然访问会有问题 sed

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] ~]