前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vsftp 利用mysql 验证虚拟账户

vsftp 利用mysql 验证虚拟账户

作者头像
老七Linux
发布2018-05-09 16:32:02
1.4K0
发布2018-05-09 16:32:02
举报

1 安装vsftpd

(1) yum install -y vsftpd

(2)编辑vsftpd.conf

内容如下:

代码语言:javascript
复制
listen=YES

connect_from_port_20=YES

pasv_enable=YES

tcp_wrappers=YES

local_enable=YES

chroot_local_user=yes

anonymous_enable=NO

guest_enable=YES

guest_username=vsftpdguest

user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

dirmessage_enable=YES

idle_session_timeout=600

check_shell=NO

(3)创建一个虚拟用户映射系统用户

代码语言:javascript
复制
useradd –s /sbin/nologin vsftpdguest

2 安装 mysql

代码语言:javascript
复制
具体步骤参考 http://www.lishiming.net/thread-7-1-2.html

3 安装 pam-mysql

代码语言:javascript
复制
wget  https://nchc.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz

tar zxvf  pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr/local/mysql --with-pam=/usr --with-pam-mods-dir=/usr/lib

make && make install

4 创建vsftp 库和相关的表并授权

代码语言:javascript
复制
>create database vsftp;

>use vsftp ;

>create table users ( name char(16) binary ,passwd char(125) binary ) ;

>insert into users (name,passwd) values ('test001',password('123456'));

>insert into users (name,passwd) values ('test002',password('234567'));

>grant select on vsftp.users to [email protected] identified by 'vsftpdguest';

5 创建虚拟账户的配置文件

代码语言:javascript
复制
mkdir /etc/vsftpd/vsftpd_user_conf 

cd  /etc/vsftpd/vsftpd_user_conf

vim test001

内容如下:

代码语言:javascript
复制
local_root=/ftp/        

write_enable=YES

virtual_use_local_privs=YES

chmod_enable=YES

6 编辑验证文件

代码语言:javascript
复制
vim  /etc/pam.d/vsftpd

内容如下:

代码语言:javascript
复制
#%PAM-1.0

auth required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

account required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

7 遇到的问题:

(1) 经过以上配置基本上算是完成了vsfpd 和mysql的结合。 但是我测试时,出现了错误,始终不能正常登录ftp。

我尝试查看日志,/var/log/message 并没有得到我想要的日志接着我查看 /var/log/secure 出现了以下错误:

代码语言:javascript
复制
Sep 15 10:21:21 localhost vsftpd: PAM unable to dlopen(/usr/lib/pam_mysql.so)
Sep 15 10:21:21 localhost vsftpd: PAM [error: libmysqlclient.so.16: cannot open shared object file: No such file or directory]

由此,我开始有了头绪,既然说是没有 libmysqlclient.so.16 那我就去找一下这个文件,因为我的mysql是直接用的二进制包,并没有编译,也就是说libmysqlclient.so.16 这个库文件存在于 /usr/local/mysql/lib/ 下 我猜测,根据错误日志,它提示在 /usr/lib/ 下没有libmysqlclient.so.16 这个文件。 于是我做了如下操作

代码语言:javascript
复制
ln -s /usr/local/mysql/lib/libmysqlclient.so.16    /usr/lib/libmysqlclient.so.16

然后重启 vsftpd 服务,再次登录时,就能顺利登录了。

(2) 明明就在/var/lib/mysql/mysql.sock目录下,怎么不能连接呢?

代码语言:javascript
复制
pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

selinux忘关了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/08/26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档