最近开始学习mysql,自己做个小实验,来个总结,比较容易理解,理论的东西不多。一、实验环境的准备1.首先下载需要的软件和依赖包[root@localhost~]#yum-yinstallmariadb-servermariadb-develpam-develgcc-c++vsftpd2.安装pam_mysql模块(PlugableAuthenticationModule插件-在认证模块中)[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]#makeinstall3。启动相关服务[root@localhost~]#systemctlstartmariadb[root@localhost~]#systemctlstartvsftpd[root@localhost~]#systemctlenablemariadb[root@localhost~]#systemctlenablevsftpd4.数据库安全设置[root@localhost~]#mysql_secure_installationSetrootpassword?[Y/n]YRemoveanonymoususers?[Y/n]YDisallowrootloginremotely?[Y/n]YRemovetestdatabaseandaccesstoit?[Y/n]YReloadprivilegetablesnow?[Y/n]Y2.创建虚拟用户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.confd/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=namepass密码加密=02。修改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到任意目录,这会存在一定的安全隐患。启用该选项可以将用户限制在自己的homeDirectoryguest_enable=YES#启用该选项可以启用将非匿名用户重新映射为系统用户的功能。如果用户的家目录被删除,用户的家目录就不能再有写权限了!如果检查发现还有写权限,就会报错要修复这个错误,可以使用命令chmoda-w/home/username去掉用户家目录的写权限,也可以在vsftpd的配置文件中加入如下项:allow_writeable_chroot=YESpam_service_name=vsftpd.mysql#Specify插件pam模块配置文件四、验证1.重启服务[root@localhost~]#systemctlrestartmariadb[root@localhost~]#systemctlrestartvsftpd2。添加虚拟用户映射的系统用户[root@localhost~]#useradd-s/sbin/nologinvirtuser#指定shell为/sbin/nologin,禁止用户登录系统3.登录虚拟用户验证4.验证用户映射[root@localhostvirtuser]#pwd/home/virtuser[root@localhostvirtuser]#mkdirpub[root@localhostvirtuser]#touchpub/test#在virtuser家目录下创建一个测试文件,然后使用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/可以看到enabl前禁止上传ing匿名用户上传权限。使用samuser开启匿名用户上传功能,使用samuser上传文件,其他权限同样可以授予用户。