安装pam_mysql验证模块
直接安装编译好的模块 pam_mysql-0.7RC1.complate libmysqlclient.so
tar -xvf pam_mysql-0.7RC1.complate.tar
cd pam_mysql-0.7RC1/
make install
复制libmysqlclient.so.15到 /usr/lib64/libmysqlclient.so.15
自己编译的话需要这几个包
pam-devel
mysql-client
libmysqlclient-devel
libopenssl-devel
zlib-devel
配置pam认证模块
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null > /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd
修改 host指向mysql所在ip
auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.238.101 db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 verbose=1
account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.238.101 db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 verbose=1
保存
mysql建库表,创建用户
CREATE DATABASE vsftpd;
CREATE TABLE `accounts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`pass` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'%' IDENTIFIED BY 'vsftpd';
FLUSH PRIVILEGES;
安装vsftpd
zapper in vsftpd
修改vsftpd配置
mv /etc/vsftpd.conf /etc/vsftpd.conf.org
cat /dev/null > /etc/vsftpd.conf
vi /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#这个用户设置是指vsftpd服务运行的用户默认是nobody
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
#guest_username 设置这个用户可以把所有ft登陆用户创建文件和目录的所有者和组映射为指定的系统用户
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
# Limit passive ports to this range to assis firewalling
pasv_min_port=30000
pasv_max_port=31000
保存退出
创建vsftpd用户
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
创建local_root目录
mkdir /home/vsftpd
chwon vsftpd:nogroup /home/vsftpd
创建安全目录
mkdir /var/run/vsftpd
chown vsftpd:nogroup vsftpd
创建vsftpd用户配置文件目录
mkdir /etc/vsftpd_user_conf
添加ftp管理员
单独配置管理用户的根目录和权限,此用户根目录为/home/vsftpd
vi /etc/vsftpd_user_conf/admin
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd
anon_mkdir_write_enable=YES
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('admin', PASSWORD('admin'));
quit;
添加一般用户
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('E11001', PASSWORD('E11001'));
INSERT INTO accounts (username, pass) VALUES('E10001', PASSWORD('E10001'));
quit;
创建一般用户的ftp home目录,设置目录权限
mkdir /home/vsftpd/E11001
chown vsftpd:nogroup /home/vsftpd/E11001
启动vsftp服务
service vsftpd start
如不能登录可以到 /var/log/message 日志中,查看报错原因。
如过登录正常 可以取消 /etc/pam.d/vsftpd 中的 verbose=1 减少日志输出
参考文章 vsftpd结合mysql实现用户验证
© 2016, 新之助meow. 原创文章转载请注明: 转载自http://www.xinmeow.com