Loading

vsftpd+mysql 虚拟用户配置(CentOS7.4)

实验环境:
系统:CentOS7.4
IP:192.168.15.236

1、将防火墙和selinux临时关闭

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2、安装mysql和vsftpd以及其他组件,等一下要编辑所以要下载gcc-c++

[root@localhost ~]# yum install mariadb-devel pam-devel mariadb-server mariadb vsftpd gcc-c++ -y  #这里不安装mysql的原因是因为懒。。。。装mysql和装mariadb效果是一样的,不用在意

3、安装pam_mysql模块,这里我们用编译安装

[root@localhost ~]# yum -y install wget
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[root@localhost src]# tar -xf pam_mysql-0.7RC1.tar.gz 
[root@localhost src]# cd pam_mysql-0.7RC1
[root@localhost pam_mysql-0.7RC1]# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
[root@localhost pam_mysql-0.7RC1]# make && make install

4、启动mariadb,登入到mariadb

[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql -uroot

5、 创建连接访问vsftpd数据库的用户,并创建虚拟用户对应表以及插入虚拟用户的用户密码

> 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('ice',PASSWORD('ice'));##添加虚拟用户
> insert into users(name,password) values('cube',PASSWORD('cube'));##添加虚拟用户
> select * from users;
+----+------+-------------------------------------------+
| id | name | password                                  |
+----+------+-------------------------------------------+
|  1 | ice  | *332FFAEB8FE98A18EC0F0BCCC9578ED86E5F4841 |
|  2 | cube | *F74B2A15FEA18CA468C4E9D535B6F4430A6BC926 |
+----+------+-------------------------------------------+
2 rows in set (0.00 sec)

6、配置/etc/pam.d/目录中的vsftpd用户认证的配置文件

[root@localhost ~]# vim /etc/pam.d/vsftpd
~
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
~
##模块 验证机制 pam_mysql路径 登入数据库的账户 登入数据库的密码 数据库的IP 数据库名称 表名称 表结构中的用户结构 表结构中的密码结构 密码加密方法

#######
crypt=0:表示口令使用明文方式保存在数据库中
crypt=1:表示口令使用UNIX的DES加密方式加密后保存在数据库中
crypt=2:表示口令使用MySQL的password()函数加密后保存在数据库中
crypt=3:表示口令使用MD5散列值的方式保存在数据库中

7、配置vsftp主配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
~
pam_service_name=vsftpd //指定pam文件位置,默认vsftpd,不需要修改
guest_enable=YES  //开启虚拟用户模式
guest_username=vuser //指定映射权限本地用户
allow_writeable_chroot=YES //允许用户具有主目录写权限,这个不配置虚拟用户将无法登入
user_config_dir=/etc/vsftpd/vusers_config/ //指定虚拟用户个人配置文件
~
#这里如果复制要注意,不能复制到空格,复制到空格将会报错

8、创建并编辑虚拟用户主配置文件

[root@localhost ~]# mkdir /etc/vsftpd/vusers_config
[root@localhost ~]# vim /etc/vsftpd/vusers_config/ice
~
local_root=/ftp/vuser/ice
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
~
[root@localhost ~]# vim /etc/vsftpd/vusers_config/cube
~
local_root=/ftp/vuser/cube
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
~

9、创建映射权限用户以及虚拟用户们的主目录

[root@localhost ~]# mkdir /ftp
[root@localhost ~]# useradd -d /ftp/vuser vuser
[root@localhost ~]# mkdir /ftp/vuser/ice
[root@localhost ~]# mkdir /ftp/vuser/cube 
[root@localhost ~]# chown vuser:vuser -R /ftp
[root@localhost ~]# chmod 777 -R /ftp

10、重启mariadb,启动vsftpd

[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# systemctl start vsftpd

11、测试

[root@localhost ~]# yum -y install ftp
[root@localhost ~]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:root): ice
331 Please specify the password.
Password:
230 Login successful.  #成功登入
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

[root@localhost ~]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:root): cube
331 Please specify the password.
Password:
230 Login successful.  #成功登入
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

最后就是哪些上面的权限配置以及用户配置可以在baidu中搜索vsftpd配置文件详解,可以自行去看其他博客的,他们都有这些参数的详细解析,这里就不多说了,因为懒。。。。=。=

posted @ 2021-06-07 18:59  忽如一夜春风来~  阅读(178)  评论(0编辑  收藏  举报