Loading

VSFTP+MySQL环境

1、CentOS7 安装VSFTP+MySQL环境。

yum -y install vsftpd* pam* db4*

2、安装MySQL和pam_mysql。

yum install -y gcc* pam-devel mariadb-devel mariadb-server

下载 pam_mysql 链接:https://pan.baidu.com/s/1yghkoDRKpoQ8eiYHAcdc5g 提取码:iolg (https://jaist.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz)

cd pam_mysql-0.7RC1
./configure --with-openssl --with-pam-mods-dir=/lib/security/
make && make install

编译安装完成后,会生成如下两个文件:

 3、创建vsftpd用户认证表并插入用户数据。  

DROP DATABASE IF EXISTS vsftpd;

--- 创建数据库
CREATE DATABASE vsftpd;

--- 创建用户设置密码并授予对 vsftpd 库查询权限
GRANT SELECT ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY '123456';

--- 创建数据表
USE vsftpd;
CREATE TABLE `vsftpusers` (
  `id` int AUTO_INCREMENT NOT NULL,
  `name` VARCHAR(50) COMMENT'姓名',
  `username` char(20) binary NOT NULL COMMENT '登录名',
  `password` char(48) binary NOT NULL COMMENT '登录密码',
  `phone` varchar(11) DEFAULT NULL COMMENT '电话号码',
  `explain` varchar(255) DEFAULT NULL COMMENT '备注',
  primary key(`id`)
)character set = utf8, COMMENT 'vsftpd用户认证表';

--- 插入数据
INSERT INTO vsftpusers(name,username,password) VALUES('张三','a1',password('123123'));
INSERT INTO vsftpusers(name,username,password) VALUES('李四','a2',password('123456'));
INSERT INTO vsftpusers(name,username,password) VALUES('王五','a3',password('456456'));
INSERT INTO vsftpusers(name,username,password) VALUES('赵六','a4',password('456456'));
SELECT * FROM vsftpd.vsftpusers;

4、为虚拟用户创建映射用户并修改家目录权限为 704 。

useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 704 /var/ftproot/

5、修改 ftp 的认证机制为虚拟用户认证(各个软件服务的认证机制配置文件 /etc/pam.d/)。

cd /etc/pam.d/ && vi vsftpd.mysql

auth    required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1:3306 db=vsftpd table=vsftpusers usercolumn=username passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1:3306 db=vsftpd table=vsftpusers usercolumn=username passwdcolumn=password crypt=2

    user          数据库用户名
    passwd        数据库密码
    host          数据库主机IP (直接写IP 或者 ip:端口形式)
    db            库名
    table         表名
    usercolumn    登录名字段 
    passwdcolumn  登录密码字段
    crypt         表示密码加密方式,0表示明文,1表示使用UNIX的DES加密,2表示使用MySQL的password()函数,3表示口令使用MD5加密

6、修改配置文件。

vi /etc/vsftpd/vsftpd.conf

修改:
anonymous_enable=NO               # 关闭匿名用户登录
pam_service_name=vsftpd.mysql     # 将认证配置文件指向自己创建的
添加:
guest_enable=YES                  # 开启虚拟用户
guest_username=virtual            # 指定虚拟用户的映射用户为 virtual
user_config_dir=/etc/vsftpd/dir   # 每一个虚拟用户的配置文件保存路径
anon_umask=022                    # 添加 umask 值
allow_writeable_chroot=YES        # 新版必须添加否则取消目录w权限。
pasv_enable=YES       (默认没有,如果不写默认是被动模式状态)
pasv_min_port=4000    (默认没有,限定端口范围便于配置防火墙)
pasv_max_port=4020    (默认没有,限定端口范围便于配置防火墙)

7、为虚拟用户创建配置文件。

mkdir /etc/vsftpd/dir/ && cd /etc/vsftpd/dir/
虚拟用户的配置文件文件名和用户名同名即可(如 a1用户的配置文件名为a1)
a、a1 用户的配置文件
anon_upload_enable=YES        # 开启上传

b、a2 用户的配置文件
anon_mkdir_write_enable=YES   # 允许创建目录

c、a3 用户的配置文件
anon_upload_enable=YES        # 开启上传
anon_other_write_enable=YES   # 开放其他人写入权限,操作其他文件

d、a4 用户的配置文件
local_root=/var/ftproot/a4    # 配置a4用户的根目录
anon_upload_enable=YES        # 开启上传
anon_mkdir_write_enable=YES   # 允许创建目录
anon_other_write_enable=YES   # 开放其他人写入权限,操作其他文件

 

posted @ 2020-04-07 17:32  Outsrkem  阅读(722)  评论(0编辑  收藏  举报