MySQL中怎么利用pam_mysql模块实现vsftpd虚拟用户,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、实验环境的准备

1. 先下载需要用到的软件和依赖包

[root@localhost~]#yum-yinstallmariadb-servermariadb-develpam-develgcc-c++vsftpd

2. 安装pam_mysql模块(Plugable Authentication Module 插件式认证模块)

[root@localhost~]#tarzxfpam_mysql-0.7RC1.tar.gz[root@localhost~]#cdpam_mysql-0.7RC1[root@localhostpam_mysql-0.7RC1]#./configure--with-mysql=/usr--with-openssl--with-pam-mods-dir=/lib/pam_mysql/[root@localhostpam_mysql-0.7RC1]#make[root@localhostpam_mysql-0.7RC1]#makeinstall

3. 启动相关服务

[root@localhost~]#systemctlstartmariadb[root@localhost~]#systemctlstartvsftpd[root@localhost~]#systemctlenablemariadb[root@localhost~]#systemctlenablevsftpd

4.数据库安全设置

[root@localhost~]#mysql_secure_installationSetrootpassword?[Y/n]YRemoveanonymoususers?[Y/n]YDisallowrootloginremotely?[Y/n]YRemovetestdatabaseandaccesstoit?[Y/n]YReloadprivilegetablesnow?[Y/n]Y

二、创建虚拟用户

1.创建数据库和表(用于存储虚拟用户的信息)

[root@localhost~]#mysql-uroot-pEnterpassword:MariaDB[(none)]>createdatabasetestdb;#创建测试数据库MariaDB[(none)]>grantselectontestdb.*tolinos@localhostidentifiedby'linux';#创建用户MariaDB[(none)]>flushprivileges;MariaDB[(none)]>usetestdb;DatabasechangedMariaDB[testdb]>createtableusers(idintAUTO_INCREMENTNOTNULL,namechar(20)binaryNOTNULL,passwordchar(20)binaryNOTNULL,primarykey(id));#创建存储用户的表

2.添加虚拟用户

MariaDB[testdb]>insertintousers(name,password)values('tom','linux');#创建用户MariaDB[testdb]>insertintousers(name,password)values('sam','linux');#创建用户MariaDB[testdb]>flushprivileges;

三、配置vsftp服务

1.创建pam认证文件

[root@localhost~]#cat/etc/pam.d/vsftpd.mysqlauthrequired/lib/pam_mysql/pam_mysql.souser=linospasswd=linuxhost=localhostdb=testdbtable=usersusercolumn=namepasswdcolumn=passwordcrypt=0accountrequired/lib/pam_mysql/pam_mysql.souser=linospasswd=linuxhost=localhostdb=testdbtable=usersusercolumn=namepasswdcolumn=passwordcrypt=0

2.修改vsftp配置文件,主要需要修改下面的配置

anonymous_enable=NO#不允许匿名用户登录local_enable=YES#允许系统用户登录write_enable=YES#允许系统用户有写权限anon_upload_enable=NO#不允许匿名用户上传文件anon_mkdir_write_enable=NO#不允许匿名用户创建目录chroot_local_user=YES#默认情况下用系统用户登录ftp之后,用户可以cd到任何目录,这样会有一定的安全隐患,启用这个选项可以把用户禁锢在自己的家目录guest_enable=YES#启用这个选项可以开启非匿名用户重映射为系统用户的功能guest_username=virtuser#映射的系统用户allow_writeable_chroot=YES#从2.3.5版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。要修复这个错误,可以用命令chmoda-w/home/username去除用户主目录的写权限,或者你可以在vsftpd的配置文件中增加下列一项:allow_writeable_chroot=YESpam_service_name=vsftpd.mysql#指定插件pam模块的配置文件

四、验证

1.重启服务

[root@localhost~]#systemctlrestartmariadb[root@localhost~]#systemctlrestartvsftpd

2.添加虚拟用户映射到的系统用户

[root@localhost~]#useradd-s/sbin/nologinvirtuser#指定shell为/sbin/nologin,禁止用户登录系统

3.登录虚拟用户验证

4.验证用户映射

[root@localhostvirtuser]#pwd/home/virtuser[root@localhostvirtuser]#mkdirpub[root@localhostvirtuser]#touchpub/test#virtuser家目录下创建test文件,然后用sam用户登录ftp,可以看到映射到了virtuser用户的家目录

5.配置授权权限

有时候我们需要针对不同的虚拟用户设置不同的权限

[root@localhost~]#tail-1/etc/vsftpd/vsftpd.confuser_config_dir=/etc/vsftpd/users_permission/[root@localhost~]#mkdir/etc/vsftpd/users_permission/[root@localhost~]#cd/etc/vsftpd/users_permission/[root@localhostusers_permission]#echo#anon_upload_enable=YES>>sam[root@localhosthome]#chmod-R777virtuser/

在启用匿名用户上传权限之前可以看到是禁止上传的,使用sam用户

开启匿名用户上传功能,使用sam用户上传一个文件

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。