Linux基础服务 ·

基于MYSQL验证的vsftpd虚拟用户

本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器

安装所需要包和包组:

在数据库服务器上安装包:

• Centos7:在数据库服务器上安装

• Centos6:在数据库服务器上安装

FTP 服务器上安装包

centos6: pam_mysql由epel6的源中提供

centos7:无对应rpm包,需手动编译安装

• 下载pam_mysql-0.7RC1.tar.gz

ftp://172.16.0.1/pub/Sources/sources/pam/

在数据库服务器上创建虚拟用户账号

1.建立存储虚拟用户的数据库,示例创建为 vsftpd 数据库

ftp服务和mysql不在同一主机:

ftp服务和mysql在同一主机:

2.准备相关表

3.添加测试的虚拟用户

根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储

FTP 服务器上配置 vsftpd 服务

1.在 FTP 服务器上建立 pam 认证所需文件

注意:参考README文档,选择正确的加密方式crypt是加密方式, 0表示不加密, 1表示crypt(3)加密, 2表示使用mysql password()函数加密, 3表示md5加密, 4表示sha1加密

配置字段说明

auth 表示认证

• account 验证账号密码正常使用

• required 表示认证要通过

• pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数

• user=vsftpd为登录mysql的用户

• passwd=mageedu 登录mysql的的密码

• host=localhost 在mysql中定义的允许连接的主机名或ip地址

• db=vsftpd 连接msyql的哪一个库

• table=users 连接库里的哪一个表

• usercolumn=name 当做用户名的字段

• passwdcolumn=password 当做用户名字段的密码

• crypt=2 密码的加密方式为mysql password()函数加密

2.建立相应用户和修改 vsftpd 配置文件,使其适应 mysql 认证

建立虚拟用户映射的系统用户及对应的目录

确保/etc/vsftpd.conf中已经启用了以下选项

启动 vsftpd 服务

查看端口开启情况

SElinux 相关设置:在 FTP 服务器上执行

测试:利用 FTP 客户端工具,以虚拟用户登录验证结果

在 FTP 服务器上配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可

1、配置vsftpd为虚拟用户使用配置文件目录

2、创建所需要目录,并为虚拟用户提供配置文件

3、配置虚拟用户的访问权限虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关
指令进行的。如果需要让用户wang具有上传文件的权限,可以修改 /etc/vsftpd/vusers_config/wang 文件,在里面添加如下选项并设置为 YES 即可,只读则设为 NO。

注意:需确保对应的映射用户对于文件系统有写权限

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

参与评论