1 安装vsftpd
(1) yum install -y vsftpd
(2)编辑vsftpd.conf
内容如下:
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)创建一个虚拟用户映射系统用户
useradd –s /sbin/nologin vsftpdguest
2 安装 mysql
具体步骤参考 http://www.lishiming.net/thread-7-1-2.html
3 安装 pam-mysql
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 库和相关的表并授权
>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 创建虚拟账户的配置文件
mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
vim test001
内容如下:
local_root=/ftp/
write_enable=YES
virtual_use_local_privs=YES
chmod_enable=YES
6 编辑验证文件
vim /etc/pam.d/vsftpd
内容如下:
#%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 出现了以下错误:
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 这个文件。 于是我做了如下操作
ln -s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16
然后重启 vsftpd 服务,再次登录时,就能顺利登录了。
(2) 明明就在/var/lib/mysql/mysql.sock目录下,怎么不能连接呢?
pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
selinux忘关了