一、实现基于MYSQL验证的vsftpd虚拟用户访问
1,mysql服务器安装
yum install mariadb-server
systemctl start mariadb
创建用户表,授权用户
mysql >
create database vsftpd;
use vsftpd
CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
insert users (name,password) value('ftp1',password('centos'));
insert users (name,password) value('ftp2',password('magedu'));
grant select on vsftpd.users to ftpdb@'10.211.11.%' identified by 'centos';
2,在vsftp服务器上面编译安装pam_mysql
准备编译环境
yum install gcc gcc-c++ pam-devel mariadb-devel
开始编译安装
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-pam-mods-dir=/lib64/security/
make && make install
3,安装vsftp
yum install vsftpd
在FTP服务器上建立pam认证所需文件
vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=ftpdb passwd=centos host=10.211.11.10 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=ftpdb passwd=centos host=10.211.11.10 mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/aaaftp vusers
centos7 需除去ftp根目录的写权限
chmod 555 /var/aaaftp
给upload读写权限
mkdir /var/aaaftp/{upload,pub}
setfacl -m u:vusers:rwx /var/aaaftp/upload/
修改vsftpd.conf
anonymous_enable=YES
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vusers
重启vsftpd
systemctl restart vsftpd
配置不通的用户拥有不同的权限
vim /etc/vsftpd/vsftpd.conf
添加
user_config_dir=/etc/vsftpd/vsftpd_conf
mkdir /etc/vsftpd/vsftpd_conf
文件名为用户名
vim /etc/vsftpd/vsftpd_conf/ftp1
添加
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftp1
目录增加vusers的读写权限
setfacl -m u:vusers:rwx /data/ftp1/upload/