本次搭建用两台主机,ftp获取账号数据从远端数据库上获取
192.168.0.106 mysql
192.168.0.104 vsftpd
在192.168.0.106创建数据库vsfftpd表users,并授权用户vsftp
安装mysql数据库:yum install -y mysql-server mysql-devel
创建数据库并授权用户select的权限:
grant select on vsftpd.* to vsftp@'192.168.%.%' identified by '123456': 表示允许用户vsftp密码为123456从以192.168.开头的地址查看vsftpd数据库下所有的表的权限
flush privileges重读授权表;
创建表users字段有id自动增长为主键,name用户名,password密码;
create table users( id int unsigned not null auto_increment primary key, name varchar(50) binary not null, password char(48) binary not null)
插入两条数据insert into users(name,password) values('admin',password('123456')), ('user',password('123456'));
password('123456')表示以mysql内部函数password加密密码
先在vsftpd服务器上测试是否能够连上mysql
编辑/etc/pam.d/vsftpd.mysql加入如下内容:
auth required pam_mysql.so user=vsftp passwd=123456 host=192.168.0.106 db=vsftpd table=users usercolumn=name passwdcolumn=pass
word crypt=2
account required pam_mysql.so user=vsftp passwd=123456 host=192.168.0.106 db=vsftpd table=users usercolumn=name passwdcolumn=p
assword crypt=2
建立虚拟用户映射的系统用户及对应的目录
# useradd -s /sbin/nologin -d /var/ftproot vir
# chmod go+rx /home/ftp
然后编辑vsftpd.conf文件增加如下内容:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES开启本地用户不能切换目录
guest_enable=YES
guest_username=vir
pam_service_name=vsftpd.mysql
配置权限文件使不同用户拥有不同权限:
virtual_use_local_privs=NO表示权限与匿名用户权限一样
write_enable=YES可查看
anon_world_readable_only=NO可下载
anon_mkdir_write_enable=YES可创建目录
anon_other_write_enable=YES可重命名,删除目录
anon_upload_enable=YES可上传文件
在vsftpd.conf文件中加入user_config_dir=/etc/vsftpd/vsftpd_user_conf/指明虚拟用户权限文件所在目录
在/etc/vsftpd/vsftpd_user_conf目录在创建与虚拟用户同名的文件
admin:
virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
user:
anon_world_readable_only=NO
anon_upload_enable=YES
write_enable=YES
测试: