mysql password() pam-mysql兼容性_pam_mysql认证ftp虚拟用户账号,且拥有不同的权限

测试环境:

1、创建两台centos7服务器,一台作为ftp和mariadb的服务端,另一台做测试端

2、服务端IP192.168.10.20:提供vsftpd程序包,mariadb-server程序包,pam_mysql(需要自行编译,centos7yum仓库不提供) mariadb-devel pam-devel 以及开发环境(gcc)

3、测试端IP192.168.10.30:lftp程序包

关闭服务端和测试端的防火墙和SELinux# systemctl stop firewalld

# setenforce 0

(1)服务器端安装和配置

安装vsftpd# yum -y install vsftpd

安装mariadb-server# yum -y install mariadb-server

安装开发环境# yum groupinstall "Development Tools" "Server Platform Development" -y

安装开发包# yum -y install mariadb-devel pam-devel

安装pam_mysql,由于centos7仓库没有,需自行下载编译;

下载源码包pam_mysql-0.7RC1.tar# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security

# make && make install

生成以下模块说明安装成功

9f26423f392e

初始化配置mariadb# vim /etc/my.cnf.d/server.cnf

9f26423f392e

启动mariadb服务# systemctl start mariadb

对Mysql进行安全加固# mysql_secure_installation

连入Mysql# mysql

创建授权用户、创建账号和密码MariaDB [(none)]> GRANT ALL ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'vsftpd';

刷新授权表MariaDB [(none)]> FLUSH PRIVILEGES;

用vsftpd账号重新连接数据库并创建新的数据库和表以及对应字段MariaDB [(none)]> exit

# mysql -uvsftpd -pvsftpd -h127.0.0.1

MariaDB [(none)]> CREATE DATABASE vsftpd;

MariaDB [(none)]> use vsftpd;

MariaDB [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));

MariaDB [vsftpd]> DESC users;

9f26423f392e

插入用户tom和jeryy,密码同名MariaDB [vsftpd]> INSERT INTO users(name,password) VALUES ('tom',PASSWORD('magedu')),('jerry',PASSWORD('jerry'));

MariaDB [vsftpd]> SELECT * FROM users;

9f26423f392e

创建ftp本地用户vuser,家目录为/ftproot/vuser,以它来当作虚拟用户映射到本地# mkdir /ftproot/

# useradd -d /ftproot/vuser vuser

# mkdir /ftproot/vuser/pub    创建pub目录,ftp约定俗成的一个目录

# tail /etc/passwd

创建pam配置文件/etc/pam.d/vsftpd.vusers,内容为用mysql来做ftp的pam验证# vim /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

9f26423f392e

修改vsftpd的配置文件内容# vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd.vusers     pam验证的文件为此前创建的/etc/pam.d/vsftpd.vusers

guest_enable=YES                              允许来宾访问

guest_username=vuser                        来宾映射的本地用户为vuser

anonymous_enable=NO                       禁止匿名用户登陆

9f26423f392e

9f26423f392e

使用测试端登陆ftp验证

提示刚才创建的用户vuser不能对自己的家目录拥有写权限

9f26423f392e

修改目录权限# chmod a-w /ftproot/vuser/

# ls -ld /ftproot/vuser/

9f26423f392e

重启vsftpd服务,再次测试# systemctl restart vsftpd

提示登陆成功,但是没发打开目录,原因是刚才的目录pub是以root身份创建的

9f26423f392e

9f26423f392e

再次创建一个目录/ftproot/vuser/upload,修改属主属组为vuser# mkdir /ftproot/vuser/upload

# chown vuser.vuser upload/

9f26423f392e

再次测试

仍然无法拥有写权限,原因:虚拟用户没有共享vsftpd的权限

9f26423f392e

定义虚拟用户权限# vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_config/

9f26423f392e

创建/etc/vsftpd/vusers_config/目录并添加内容,允许tom上传文件,允许jerry创建目录,上传文件,删除目录文件等操作# mkdir /etc/vsftpd/vusers_config/

# vim /etc/vsftpd/vusers_config/tom     每个虚拟用户都需要创建对应其name的文件

anon_upload_enable=YES    允许上传

# cd /etc/vsftpd/vusers_config/

# cp tom jerry

# vim jerry

anon_upload_enable=YES

anon_mkdir_write_enable=YES   允许创建目录

anon_other_write_enable=YES    允许其他写操作

重启vsftpd服务,再次测试# systemctl restart vsftpd

tom可以上传文件

9f26423f392e

tom无法创建目录和删除文件

9f26423f392e

用jerry测试,可以上传,也能创建目录

9f26423f392e

9f26423f392e

也可以删除创建的目录

9f26423f392e

也可以删除文件

9f26423f392e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值