1、在ftp服务器上安装vsftpd
yum -y install vsftpd
2、生成自签名证书
cd /etc/pki/tls/certs/
make vsftpd.pem
openssl x509 -in vsftpd.pem -noout -text
3、配置vsftpd使支持ssl
vi /etc/vsftpd/vsftpd.conf
ssl_enable=YES
allow_anon_ssl=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
4、在ftp服务器上安装pam_mysql模块
(1)下载源码包
https://github.com/NigelCunningham/pam-MySQL/archive/v0.8.1.tar.gz
(2)解压源码包
tar xf pam-MySQL-0.8.1.tar.gz
(3)进入解压后的目录
cd pam-MySQL-0.8.1
less INSTALL.pam-mysql 可查看安装方法
less README 可查看配置方法
(4)安装依赖包
yum -y install mysql-devel pam-devel
(5)生成configure文件
autoreconf -f -i
(6)生成make文件
./configure --with-pam-mods-dir=/usr/lib64/security/
(7)
make && make install
5、在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
);
GRANT SELECT ON vsftpd.* TO ftpuser@localhost IDENTIFIED BY 'centos';
6、在mysql数据库中插入ftp虚拟用户及密码
INSERT INTO users(name,password) values(‘user1',password('centos'));
7、在ftp服务器上配置pam_mysql
vi /etc/pam.d/pam.mysql
auth optional pam_mysql.so user=ftpuser passwd=centos host=192.168.34.27 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=ftpuser passwd=centos host=192.168.34.27 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
8、在ftp服务器上创建系统用户用于映射虚拟用户
useradd -r -s/sbin/nologin -d/data/ftp ftpuser
mkdir /data/ftp -p
9、修改vsftpd的配置文件
vi /etc/vsftpd/vsftpd.conf
pam_service_name=/etc/pam.d/pam.mysql #####使vsftpd使用pam_mysql模块
guest_enable=YES #######开启虚拟用户登录
guest_username=ftpuser #######设置虚拟用户映射的系统用户名
user_config_dir=/etc/vsftpd/ftpuser ######设置虚拟用户配置文件的所在目录
10、创建虚拟用户的根目录
mkdir /data/ftp/user1
chown ftpuser.ftpuser /data/ftp/user1
11、为虚拟用户配置ftp权限
vi /etc/vsftpd/ftpuser/user1
local_root=/data/ftp/user1 ####设置此虚拟用户的根目录
allow_writeable_chroot=YES ####设置在根目录有写权限的情况下可以登录
anon_upload_enable=YES ####设置此虚拟用户有上传权限
anon_mkdir_write_enable=YES ####设置此虚拟用户有创建目录权限
anon_other_write_enable=YES ####设置此虚拟用户有删除、修改权限
anon_umask=073 ####修改此用户所创建的文件的权限,使之有查看目录的权限
12、重启vsftpd服务
systemctl restart vsftpd