一、安装所需要程序

1、安装mysqlpam_mysql


# yum -y install vsftpd mysql-servermysql-devel pam_mysql


注意:pam_mysqlepel源提供。


二、创建虚拟用户账号


1.准备数据库及相关表


首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。


mysql> create database vsftpd;


mysql> grant select on vsftpd.* tovsftpd@localhost identified by 'www.magedu.com';

mysql> grant select on vsftpd.* tovsftpd@127.0.0.1 identified by 'www.magedu.com';

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、添加测试的虚拟用户


根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。


mysql> insert into users(name,password)values('tom',password('google'));

mysql> insert into users(name,password)values('jerry',password('google'));



三、配置vsftpd


1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /lib64/security/pam_mysql.souser=vsftpd passwd=yourpassword host=localhost db=vsftpd table=users usercolumn=namepasswdcolumn=password crypt=2

account required /lib64/security/pam_mysql.souser=vsftpd passwd=yourpassword host=localhost db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2

# vim /usr/share/doc/pam_mysql-0.7/README这里有详细说明

wKioL1M2xZ7gxEJXAAIg_Ba2U7o433.jpg

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。


2.修改vsftpd的配置文件,使其适应mysql认证


建立虚拟用户映射的系统用户及对应的目录


# useradd -s /sbin/nologin -d /var/ftprootvuser

# chmod go+rx /var/ftproot


请确保/etc/vsftpd.conf中已经启用了以下选项


anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES


而后添加以下选项


guest_enable=YES

guest_username=vuser

wKiom1M2xdqQbXxKAAC1llrUnG4313.jpg


并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql


四、启动vsftpd服务


# service vsftpd start

# chkconfig vsftpd on

查看端口开启情况

wKiom1M2xe3j11gRAABiSiKdMQs868.jpg

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验证。

wKioL1M2xdniRCruAAFuC34uyw0778.jpg

五、配置虚拟用户具有不同的访问权限


vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。


1、配置vsftpd为虚拟用户使用配置文件目录


# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config

可以man vsftpd.conf获取帮助

wKiom1M2xhuhYIV8AALv6jvkWYM693.jpg

2、创建所需要目录,并为虚拟用户提供配置文件


# mkdir /etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch tom jerry


3、配置虚拟用户的访问权限


虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}


4、测试

        #vim /etc/vsftpd/vusers/tom

        anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

wKiom1M2xiuh5_hUAAFFb_VCO4Q012.jpg

wKioL1M2xhDi0o19AAEtiAWHBjc386.jpg