设为首页 收藏本站
查看: 1538|回复: 0

[经验分享] vsftpd虚拟用户认证配置(vsftpd+pam+mysql)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-12-7 14:33:15 | 显示全部楼层 |阅读模式
                                                一、准备所需要的程序包
mysql
pam_mysql
vsftpd
二、开始安装
1
2
[iyunv@localhost ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql
// 注意:pam_mysql由epel源提供,epel源需要自行设置



三、创建虚拟用户账号
1、创建数据库及存储用户的表
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@localhost ~]# service mysqld start
// 启动mysql服务
[iyunv@localhost ~]# mysql
mysql> create database vsftpd;    // 创建名为vsftpd的数据库
Query OK, 1 row affected (0.00 sec)

mysql> use vsftpd   // 切换当前数据库为vsftpd
Database changed
mysql> create table users(id int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,name VARCHAR
(50) NOT NULL,password CHAR(48) NOT NULL);
Query OK, 0 rows affected (0.02 sec)  // 创建users表并建立对应字段用以存放虚拟用户名和密码

mysql>



2、创建一个数据库用户给vsftpd服务认证虚拟用户时连接访问数据使用
1
2
3
4
5
6
mysql> grant select on vsftpd.* to vsftpd@172.16.20.242 identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)  // 创建一个名为vsftpd的用户,并且赋予它以vsftpd数据
所有表的查看权限,上面的IP地址是指定可以从哪个地址访问mysql数据库

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)



3、向表中添加虚拟用户账号和密码
1
2
3
mysql> insert into users(name,password) values('tom','redhat'),('jerry','redhat');
Query OK, 2 rows affected (0.00 sec)  // 向users表中插入两行数据,分别对应两个用户名和密码
Records: 2  Duplicates: 0  Warnings: 0



需要注意的是:这里使用的是明文存放密码,建议使用加密存放,例如password()函数,使用方法如下:
1
2
mysql> insert into users(name,password) values('tom',password('redhat')),('jerry',passowrd
('redhat'));




三、配置vsftpd
1、建立pam认证所需文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[iyunv@localhost ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=redat host=172.16.20.242 db=
vsftpd table=uesrs usercolumn=name passwdcolumn=password crypto=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=redhat host=172.16.20.242
db=vsftpd table=users usercolumn=name passwdcolumn=password crypto=0
// /lib/security/pam_mysql.so指定使用pam_mysql.so进行认证
// user=vsftpd 指定数据库用户名
// passwd=redhat 指定数据库用户密码
// host=172.16.20.242 指定同过哪个主机地址进行数据库连接
// db=vsftpd 指定数据库名
// table=users 指定存储虚拟用户名和密码的表
// usercolumn=name 指定存储用户名的字段
// passwdcolumn=password 指定存储虚拟用户密码的字段
// crypto=0 指定虚拟用户密码存放的加密方式,0代表不加密,1代表使用crypt函数加密,2代表使用password()函数加密
,3代表使用md5方式加密,4代表使用sha1方式加密



2、修改vsftpd的配置,使其适应mysql认证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[iyunv@localhost ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[iyunv@localhost ~]# chmod go+rx /var/ftproot
// 创建一个虚拟用户映射的系统用户,用以访问ftp服务,由于其家目录就是fpt服务的访问目录,所以
要给予其家目录其他用户可以访问的权限

[iyunv@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   // 允许匿名用户访问,因为虚拟用户的实质就是匿名用户
local_enable=YES   // 允许本地用户访问,因为虚拟用户需要映射到本地用户
write_enable=YES   // 开启对访问目录的写权限,根据需求开启
anon_upload_enable=NO   // 禁止匿名用户上传,根据需求配置
anon_mkdir_write_enable=NO   // 禁止虚拟用户创建和删除目录,根据需求配置
chroot_local_user=YES   // 禁止用户切换目录

guest_enable=YES   // 开启虚拟用户功能
guest_username=vuser    // 设定虚拟用户的映射的本地用户为vuser

pam_service_name=vsftpd.mysql    // pam的配置文件默认为vsftpd,由于上面做了修改,这里需要修
改成我们配置的文件




四、启动vsftpd服务,并测试配置效果
1
[iyunv@localhost ~]# service vsftpd start



使用windows的CMD访问

https://s3.51cto.com/oss/201711/17/836101ef13155b5f301747cd107457b3.png

五、配置虚拟用户的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名,配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
1、配置vsftpd为虚拟用户使用配置文件目录
1
2
[iyunv@localhost ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config   // 设定虚拟用户配置文件的存放目录



2、创建相应目录并创建配置文件
1
2
[iyunv@localhost ~]# mkdir /etc/vsftpd/vusers_config
[iyunv@localhost ~]# touch tom jerry



3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。例如,如果需要让tom用户具有上传文件的权限等,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。
需要注意的是,之前在/etc/vsftpd/vsftpd.conf中的相关于匿名用户的权限则需要关闭掉,避免冲突,如果vsftpd.conf中配置了权限,而虚拟用户的配置文件中没有配置,那么会继承vsftpd.conf中的权限
如果vsftpd.conf中配置了权限,而虚拟用户的配置文件中也有配置吗,那么会继承虚拟用户的配置文件中的配置
1
2
3
4
[iyunv@localhost ~]# vim /etc/vsftpd/vusers_config/tom
anon_upload_enable=YES
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}




写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。

                                       


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421746-1-1.html 上篇帖子: vsftpd简析 下篇帖子: redhat7,centos7 ftp 匿名服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表