一、安装所需要程序
1、事先安装好开发环境和mysql数据库;三个跟开发相关的包组:
Desktop Platform Development:有图形程序时需安装此组;
Server Platform Development
Development Tools
2.安装pam_mysql-0.7RC1
# yum -y install pam_mysql # tar zxvf pam_mysql-0.7RC1.tar.gz # cd pam_mysql-0.7RC1 # ./configure --with-mysql=/usr --with-openssl # make # make install
3.安装vsftpd
# yum -y install vsftpd
二、创建虚拟用户账号
1.准备数据库及相关表
首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。
#mysql> create database vsftpd; #mysql> grant all on vsftpd.* to 'vsftpd'@'localhost' identified by '123' #mysql> grant all on vsftpd.* to 'vsftpd'@'localhost' identified by '123' #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、添加测试的虚拟用户
根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。
mysql> insert into users (name,password) values('huihui','xiao'),('123','123'); mysql> insert into users(name,password) values('tom' '123');
三、配置vsftpd
1.建立pam认证所需文件
#vi /etc/pam.d/vsftpd.mysql
添加如下两行
#auth required /lib64/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0 #account required /lib64/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
2.修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
# useradd -s /sbin/nologin -d /var/ftp2 vsftpd # chmod go+rx /var/ftp2
请确保/etc/vsftpd.conf中已经启用了以下选项,而后添加以下选项,并确保pam_service_name选项的值如下所示
#anonymous_enable=YES #local_enable=YES #write_enable=YES #anon_upload_enable=NO #anon_mkdir_write_enable=NO #chroot_local_user=YES #listen=YES #guest_enable=YES #guest_username=vsftpd #pam_service_name=vsftpd.mysql
四、启动vsftpd服务
# service vsftpd start # chkconfig vsftpd on
查看端口开启情况
# netstat -tnlp |grep :21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 23286/vsftpd
使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正
# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:root): tom 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (127,0,0,1,174,160). 150 Here comes the directory listing. 226 Directory send OK.