安装vsftpd+pam+mysql实现对虚拟用户身份认证功能

事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的;mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28。这里不再介绍安装步骤,前面已经详细介绍过。由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能。

一、安装所需要程序

1、事先安装好开发环境和mysql数据库;

# yum -y install mysql-server mysql-devel

# yum -y groupinstall "Development Tools" "Development Libraries"

2.安装pam_mysql-0.7RC1

# tar zxvf  pam_mysql-0.7RC1.tar.gz

# cd  pam_mysql-0.7RC1

# ./configure --with-mysql=/usr --with-openssl

# make

# make install

3.安装vsftpd

# yum -y install vsftpd

#cp /usr/lib/security/pam_mysql.so  /lib/security/

#这个共享库在后面的pam文件中要用到,请务必要确保它的路径的正确性

二、创建虚拟用户账号

1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

mysql> create database vsftpd;

mysql> create database vsftpd;

mysql> grant select on vsftpd.* tovsftpd@localhost identified by 'ftp';

mysql> grant select on vsftpd.* [email protected] identified by 'ftp';

mysql> flush privileges;

#这里用户vsftpd用处在于将来pam到mysql数据库中检索时mysql这个进程的属主以vsftpd来运行

mysql> use vsftpd;

mysql> create table users (

-> id int AUTO_INCREMENT NOT NULL,

-> name char(20) binary NOT NULL,

-> password char(48) binary NOT NULL,

-> primary key(id)

-> );

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。

mysql> insert into users(name,password) values('tom','xsl');

mysql> insert into users(name,password) values('boy','xsl');

三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=ftp host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=ftp host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

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

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

#useradd -s /sbin/nologin -d /var/ftproot vuser

#chmod go+rx /var/ftproot

请确保/etc/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

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

pam_service_name=vsftpd.mysql

#这个文件名称一定要与上面所建立的pam文件名称相同

四、启动vsftpd服务

# service vsftpd start

# chkconfig vsftpd on

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正

# ftp localhost

如果使用命令方式登录时,例如以我的电脑为例,如果出现

[root@localhost ~]# ftp 192.168.0.104

Connected to 192.168.0.104.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.0.104:root): tom

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

ftp>

这样你的字样的话,请查看日志信息,使用tail  /var/log/secure命令

Oct 19 15:41:42 localhost vsftpd: pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2))

Oct 19 15:43:02 localhost vsftpd: pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2))

如果出现这样的字样,说明pam-mysql模块无法通过mysql的套接字域mysql建立连接。

解决办法:修改/etc/my.cnf

在[mysqld]这个容器内修改套接字的路径,例如

socket          = /var/lib/mysql/mysql.sock

我之前是把它放在了/tmp/目录下,因此无法建立链接。修改完成之后,就可以正常登录进去了。

五、配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

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

# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_dir

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

# mkdir /etc/vsftpd/vusers_dir/

# cd /etc/vsftpd/vusers_dir/

# touch tom boy

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

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

anon_upload_enable=YES

这样就可以指定虚拟用户的访问权限了

这样一个完整的认证架构就完成了。

事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的;mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28。这里不再介绍安装步骤,前面已经详细介绍过。由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能。

一、安装所需要程序

1、事先安装好开发环境和mysql数据库;

# yum -y install mysql-server mysql-devel

# yum -y groupinstall "Development Tools" "Development Libraries"

2.安装pam_mysql-0.7RC1

# tar zxvf  pam_mysql-0.7RC1.tar.gz

# cd  pam_mysql-0.7RC1

# ./configure --with-mysql=/usr --with-openssl

# make

# make install

3.安装vsftpd

# yum -y install vsftpd

#cp /usr/lib/security/pam_mysql.so  /lib/security/

#这个共享库在后面的pam文件中要用到,请务必要确保它的路径的正确性

二、创建虚拟用户账号

1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

mysql> create database vsftpd;

mysql> create database vsftpd;

mysql> grant select on vsftpd.* tovsftpd@localhost identified by 'ftp';

mysql> grant select on vsftpd.* [email protected] identified by 'ftp';

mysql> flush privileges;

#这里用户vsftpd用处在于将来pam到mysql数据库中检索时mysql这个进程的属主以vsftpd来运行

mysql> use vsftpd;

mysql> create table users (

-> id int AUTO_INCREMENT NOT NULL,

-> name char(20) binary NOT NULL,

-> password char(48) binary NOT NULL,

-> primary key(id)

-> );

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。

mysql> insert into users(name,password) values('tom','xsl');

mysql> insert into users(name,password) values('boy','xsl');

三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=ftp host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=ftp host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

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

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

#useradd -s /sbin/nologin -d /var/ftproot vuser

#chmod go+rx /var/ftproot

请确保/etc/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

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

pam_service_name=vsftpd.mysql

#这个文件名称一定要与上面所建立的pam文件名称相同

四、启动vsftpd服务

# service vsftpd start

# chkconfig vsftpd on

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正

# ftp localhost

如果使用命令方式登录时,例如以我的电脑为例,如果出现

[root@localhost ~]# ftp 192.168.0.104

Connected to 192.168.0.104.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.0.104:root): tom

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

ftp>

这样你的字样的话,请查看日志信息,使用tail  /var/log/secure命令

Oct 19 15:41:42 localhost vsftpd: pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2))

Oct 19 15:43:02 localhost vsftpd: pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2))

如果出现这样的字样,说明pam-mysql模块无法通过mysql的套接字域mysql建立连接。

解决办法:修改/etc/my.cnf

在[mysqld]这个容器内修改套接字的路径,例如

socket          = /var/lib/mysql/mysql.sock

我之前是把它放在了/tmp/目录下,因此无法建立链接。修改完成之后,就可以正常登录进去了。

五、配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

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

# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_dir

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

# mkdir /etc/vsftpd/vusers_dir/

# cd /etc/vsftpd/vusers_dir/

# touch tom boy

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

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

anon_upload_enable=YES

这样就可以指定虚拟用户的访问权限了

这样一个完整的认证架构就完成了。


相关内容

  • 南京邮电大学-课程设计报告Ⅱ
  • 南京邮电大学管理学院 课程设计报告 课 程 名:课程设计Ⅱ-网站设计与开发 网站题目:网上机票订购系统 任课教师:洪小娟 专业:信息管理与信息系统 学 号: 姓 名: 成 绩: 2016/2017学年第2学期 南京邮电大学管理学院 指导教师成绩评定表 一.需求分析 网上机票订购系统 该网上机票订购系 ...

  • Linux.课后题答案
  • 第二章 常用命令 选择题 1. 若要设置/usr/myprog文件的拥有者有读.写和可执行权限,用户组和其他用户均没有对该文件的操作权限,以下操作命令中,正确的是( A ). A. chmod 700 /usr/myprog B. Chown 700 /usr/myprog C. Chmod u=r ...

  • 服务器安装
  • 1.配置与管理Samba服务器(掌握Samba服务器的安装.配置与调试.) 1.1 了解Samba应用环境 ●文件和打印机共享:文件和打印机共享是Samba的主要功能,SMB进程实现 资源共享,将文件和打印机发布到网络之中,以供用户可以访问. ●身份验证和权限设置:smbd服务支持user mode ...

  • vsftpd服务配置相关知识
  • vsftpd 服务配置相关知识 1vsftpd的安装于启动 vsftpd的安装 # yum install vsftpd vsftpd的启动和停止 # service vsftpd start # service vsftpd stop # service vsftpd restart 2vsftp ...

  • 基于开源软件的私有云计算平台构建_姜毅
  • 研究与开发 研究与开发 基于开源软件的私有云计算平台构建* 姜 毅 1,2 ,王伟军1,曹丽3,刘凯1,陈桂强 1 (1. 华中师范大学信息管理学院武汉430079:2. 浙江理工大学经济管理学院杭州310018: 3. 浙江理工大学信息学院杭州310018) 摘 要:介绍了私有云的应用范围,讨论了 ...

  • 电子商务平台方案
  • 中科软科技股份有限公司 电子商务平台 一个集传统商城.手机商城.微信商城为一体的综合平台 支持单店铺.店中店模式 中科软科技股份有限公司 二零一四年六月 目录 1 概述.................................................................. ...

  • "系统维护与管理"实习报告
  • 一、 实习内容: 1、此次实习我首先采用的平台是windows xx server,这也是主要的平台,相应的web架构是apache+php+mysql+server-u。其次是red hat linux 9,相应的web架构也是apache+php+mysql+server-u。 2、帐户管理主要 ...

  • 网络工程师考试知识点[必考知识点]
  • 网络工程师考试知识点 1.常用的虚拟存储器由主存-辅存两级存储器组成 2.中断向量可提供中断程序的入口地址 3.DMA工作方式下,在主存与外设之间建立直接的数据通信. 4.PERT不能清晰秒速各个任务之间的并行情况,甘特图不能清晰描述各个问题之间的依赖关系 5.路由器出厂时,默认的串口封装协议是HD ...

  • 毕业论文--汽车票订票系统
  • 摘 要 随着我国铁路交通的不断发展,简单的窗口售票模式已经不能满足方便人们出行的目的.采用先进的网络技术开发出方便快捷的网上订票系统是现代客运业务发展的必然需求.本次设计的火车票网上订票系统通过访问主页,可以实现个人信息注册.车次车票价格查询.在线订票退票等基本功能,为用户提供方便快捷的订票服务. ...