继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

基于mysql控制vsftp的用户认证机制

largeQ
关注TA
已关注
手记 962
粉丝 92
获赞 585


一、简介

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等

二、特点

①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用;

②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准;

③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作;

④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。

三、基于mysql实现vsftp的账号管理

  1.安装mysql和pam_mysql

[root@bogon yum.repos.d]# yum -y install vsftpd mysql-server mysql-devel pam_mysql

  2.准备数据库  

mysql> create database vsftpd;

Query OK, 1 row affected (0.00 sec)

mysql> grant all on vsftpd.* to vsftpd@localhost identified by 'wangfeng7399';

Query OK, 0 rows affected (0.00 sec)

mysql> grant all on vsftpd.* to vsftpd@'127.0.0.1' identified by 'wangfeng7399';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

  3.创建表

mysql> create table user(id int AUTO_INCREMENT primary key NOT NULL,name varchar(50) binary NOT NULL, password char(48) binary NOT NULL);

  4.添加测试的虚拟用户

mysql> insert into user(name,password)values('lili',password('wodehao123')),('tom',password('wodehao123'));

  说明:为了确保账号的安全,本处使用的为mysql的password加密机制

  5.配置pam认证所需的文件

编辑/etc/pam.d/vsftp.conf添加如下行

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=wangfeng7399 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=wangfeng7399 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

  6.修改vsftpd的配置文件,使其适应mysql认证

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

[root@bogon ~]# useradd -s /sbin/nologin -d /var/ftproot vuser

[root@bogon ~]# chmod go+rx /var/ftproot

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

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

并在文件的末尾添加

guest_enable=YES

guest_username=vuser

anon_umask=022

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

  7.启动服务,并使服务能够开机自动启动

[root@bogon ~]# service vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@bogon ~]# chkconfig vsftpd on

    8.测试

wKioL1MwSDGht00eAACZFRIRuoM922.jpg

测试成功了!

9.创建一个文件试试,要修改配置文件是其有创建文件的权限

anon_mkdir_write_enable=YES

wKioL1MwSRLTs03FAADUfjcrYH4463.jpg   10.配置虚拟用户具有不同的访问权限

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

 编辑vstpd的主配置文件,添加如下行  

user_config_dir=/etc/vsftpd/vuser_dir

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

[root@bogon ftproot]# mkdir /etc/vsftpd/vuser_dir

[root@bogon ftproot]# cd /etc/vsftpd/vuser_dir

[root@bogon vuser_dir]# touch lili tom

配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。  

anon_upload_enable=YES

大功告成,本人水平有限,如有错误,请各位大神批评指正!!!

©著作权归作者所有:来自51CTO博客作者wangfeng7399的原创作品,如需转载,请注明出处,否则将追究法律责任

vsftp mysql 用户控制linux服务


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP