suse 11 sp3 x64 系统安装 vsftpd pam_mysql 配置mysql 通过数据库校验用户名密码

安装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

0.00 avg. rating (0% score) - 0 votes
点赞