VSFTP+MariaDB 实现ftp的匿名认证

Mysql:

172.20.1.11 作为mysql的服务端,安装过程略

创建数据库,及授权远程账户

MariaDB [(none)]> create database vsftpd;

MariaDB [(none)]> GRANT select ON vsftpd.* TO 'ftpuser'@'%' identified by '123456';

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> use vsftpd;

Database changed

MariaDB [vsftpd]> CREATE TABLE users(

-> id int auto_increment not null,

-> name char(20) binary not null,

-> password char(48) binary not null,

-> primary key(id));

MariaDB [vsftpd]>

insert into users(name,password) values('zhangsan',password('zhangsan')),('lisi',password('lisi'));

Vsftpd:

172.20.1.10 VSFTP服务器上需要安装vsftpd 和pam_mysql(epel源中,是pam连接mysql的驱动程序,epel源需要单独配置)

[root@localhost ~]# yum install vsftpd pam_mysql

建立pam认证所需文件

[root@localhost log]# rpm -ql pam_mysql

/lib64/security/pam_mysql.so 共享模块的路径,下面会用得到

/usr/share/doc/pam_mysql-0.7

/usr/share/doc/pam_mysql-0.7/COPYING

/usr/share/doc/pam_mysql-0.7/CREDITS

/usr/share/doc/pam_mysql-0.7/ChangeLog

/usr/share/doc/pam_mysql-0.7/NEWS

/usr/share/doc/pam_mysql-0.7/README

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.mysql (不存在,创建即可)

auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=172.20.1.11 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=172.20.1.11 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

创建系统用户(虚拟用户需要对应一个系统用户)

[root@localhost vsftpd]# useradd -s /sbin/nologin -d /var/ftproot vuser

[root@localhost vsftpd]# chmod go+rx /var/ftproot

请确保/etc/vsftpd/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

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

pam_service_name=vsftpd.mysql

至此vsftpd已经可以正常开启,但是使用虚拟用户登录进来后,所有的权限都是一样的

对不同的虚拟用户赋予不同的权限

编辑/etc/vsftpd/vsftpd.conf添加如下行

user_config_dir=/etc/vsftpd/vusers_config

[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_config 目录不存在,创建之

[root@localhost vsftpd]# cd /etc/vsftpd/vusers_config

[root@localhost vusers_config]# touch zhangsan lisi 为每一个虚拟用户创建一个文件,里面内容定义其权限

常用的有:

anon_upload_enable={YES|NO} 是否允许上传操作

anon_mkdir_write_enable={YES|NO} 是否允许写入操作

anon_other_write_enable={YES|NO} 是否允许删除等操作

[root@localhost vusers_config]# cat zhangsan lisi

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

zhangsan用户登录效果,可以上传、重命名和删除

VSFTP+MariaDB 实现ftp的匿名认证_服务端

VSFTP+MariaDB 实现ftp的匿名认证_mysql_02

Lisi用户登录效果,可以上传,但不可以重命名及删除

VSFTP+MariaDB 实现ftp的匿名认证_认证_03

如果禁止上传、创建、重命名、删除等,则全部NO掉即可