实验环境
系统:CentOS7
IP:192.168.253.128
第一步:防火墙和selinux先关了
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
第二步:安装数据库和pam_mysql模块
pam_mysql模块下载地址,http://pam-mysql.sourceforge.net/
yum install mariadb-devel pam-devel mariadb-server mariadb gcc-c++ -y
cd /usr/local/src/
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar -xf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
make && make install
第三步:在数据库中添加虚拟用户
systemctl start mariadb
mysql -u root
数据库中
> create database vsftpd;
> grant all on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftpd'; #设置连接mysql用户
> use vsftpd;
> create table users(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , name VARCHAR(100) NOT NULL , password char(48) NOT NULL ,UNIQUE KEY(name));
##创建存放虚拟用户用户名密码的表
> insert into users(name,password) values('ice',PASSWORD('ice')); ##添加虚拟用户
> insert into users(name,password) values('cube',PASSWORD('cube'));##添加虚拟用户
MariaDB [vsftpd]> select * from users;
+----+------+-------------------------------------------+
| id | name | password |
+----+------+-------------------------------------------+
| 1 | ice | *332FFAEB8FE98A18EC0F0BCCC9578ED86E5F4841 |
| 2 | cube | *F74B2A15FEA18CA468C4E9D535B6F4430A6BC926 |
+----+------+-------------------------------------------+
2 rows in set (0.00 sec)
第四步:创建用与认证的配置文件/etc/pam.d/vsftpd.vusers
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
/usr/local/src/pam_mysql-0.7RC1/README 这个文件有详细解释
第五步:修改主配置文件/etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.vusers ##这个是上一步我们创建的文件的文件名
guest_enable=YES
guest_username=vuser
创建虚拟用户映射的系统用户
mkdir -pv /ftp/
useradd -d /ftp/vuser/ vuser
mkdir -pv /ftp/vuser/pub
chmod -R 777 /ftp/vuser/pub
第六步:启动服务,并测试
systemctl start vsftpd
ss -nlt
用虚拟用户登陆测试一下
yum install ftp -y 先下载一下客户端工具
测试一下
还可以进行虚拟用户的权限控制
第一步:在主配置文件中添加
user_config_dir=/etc/vsftpd/vusers_config/
第二步:创建这个/etc/vsftpd/vusers_config/目录
mkdir -pv /etc/vsftpd/vusers_config/
第三步:进行权限控制
我们现在有两个用户 比如 我们允许ice用户有创建目录的权限。但是不允许cube用户有创建目录的权限。
echo 'anon_mkdir_write_enable=YES' > /etc/vsftpd/vusers_config/ice
echo 'anon_mkdir_write_enable=NO' > /etc/vsftpd/vusers_config/cube
这里的权限控制指令常用的有下面几个
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
- anon_other_write_enable=YES
第四步:重启服务 测试一下
systemctl restart vsftpd