centos vsftp mysql_CentOS6.4 实现基于mysql的vsftpd

大纲一、安装所需要的软件包

二、创建虚拟用户账号

三、配置vsftpd

四、启动vsftpd服务并查看

五、关闭防火墙与SElinux

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

一、安装所需要的软件包

1. 安装开发环境[root@ftp ~]# yum -y groupinstall "Development Tools" "Development Libraries"

2. 安装mysql数据库[root@ftp ~]# yum -y install mysql-server mysql-devel

[root@ftp pam.d]# chkconfig mysqld on #开机自启动

[root@ftp pam.d]# chkconfig mysqld --list

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@ftp pam.d]#

3. 安装 pam_mysql[root@ftp ~]# wget http://sourceforge.net/projects/pam-mysql/files/latest/download/pam_mysql-0.7RC1.tar

[root@ftp ~]# tar xf pam_mysql-0.7RC1.tar.gz

[root@ftp ~]# cd pam_mysql-0.7RC1

[root@ftp pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-openssl

[root@ftp pam_mysql-0.7RC1]# make && make install

编译过程中出错:configure: error: Cannot find pam headers. Please check if your system is ready for pam module development.

解决方法:[root@ftp pam_mysql-0.7RC1]# yum install -y pam-devel

说明:安装完之后,相应的库文件被安装在/lib/security目录中,[root@ftp ~]# cd /lib/security/

[root@ftp security]# ls

pam_mysql.la pam_mysql.so

[root@ftp security]#

4. 安装 vsftpd[root@ftp pam_mysql-0.7RC1]# yum -y install vsftpd

[root@ftp pam.d]# chkconfig vsftpd on #开机自启动

[root@ftp pam.d]# chkconfig vsftpd --list

vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@ftp pam.d]#

二、创建虚拟用户账号

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

1. 启动mysql数据库[root@ftp ~]# service mysqld start

Starting mysqld: [ OK ]

[root@ftp ~]#

2. 登录并创建数据库及相关表[root@ftp ~]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.1.69 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(1). 创建数据库vsftpdmysql> create database vsftpd;

Query OK, 1 row affected (0.00 sec)

(2). 创建授权mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456'; #给vsftpd授权

Query OK, 0 rows affected (0.01 sec)

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456'; #给vsftpd授权

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

(3). 创建users表mysql> use vsftpd;

Database changed

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)

-> );

Query OK, 0 rows affected (0.02 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

| vsftpd |

+--------------------+

4 rows in set (0.00 sec)

(4). 测试vsftpd是否可以正常查询数据库信息

3. 添加测试的虚拟用户

说明:根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。mysql> insert into users(name,password) values('tom','123456');

Query OK, 1 row affected (0.01 sec)

mysql> insert into users(name,password) values('jerry','654321');

Query OK, 1 row affected (0.00 sec)

mysql> select * from users;

+----+-------+----------+

| id | name | password |

+----+-------+----------+

| 1 | tom | 123456 |

| 2 | jerry | 654321 |

+----+-------+----------+

2 rows in set (0.00 sec)

mysql>

注:在vsftpd数据库中创建表users,包含name和password两个字段,在表中插入tom和jerry两条用户的记录,其中123456和654321为密码,查询用户信息。

三、配置vsftpd

1. 建立pam认证所需文件[root@ftp ~]# cd /etc/pam.d/

[root@ftp pam.d]# ls

chfn fingerprint-auth passwd run_init smtp sudo vsftpd

chsh fingerprint-auth-ac password-auth runuser smtp.postfix sudo-i

config-util login password-auth-ac runuser-l sshd su-l

crond newrole polkit-1 smartcard-auth ssh-keycat system-auth

cvs other remote smartcard-auth-ac su system-auth-ac

[root@ftp pam.d]# vim vsftpd.mysql

auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn

=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercol

umn=name passwdcolumn=password crypt=0

说明:

其中user 是读取mysql数据库时使用的用户名,passwd 为其对应的密码,host指定mysql数据库所在的主机,db指定存放虚拟用户的数据库,table指定存放虚拟用户的表,usercolumn、passwdcolumn是指定表中存放用户名和密码的字段。

crypt指定密码字段是以什么方式存储到数据库中

(1)crypt=0表示以明文保存密码

(2)crypt=1表示使用crypt( )函数加密保存密码

(3)crypt=2表示使用mysql中的password( )函数加密保存密码

(4)crypt=3表示使用md5的方式保存密码

2. 建立虚拟用户映射的系统用户及对应的目录[root@ftp pam.d]# useradd -s /sbin/nologin -d /var/ftproot vuser #-d 指定家目录的位置 -s 指定用户登录的shell,如果为用户分配的shell是/sbin/nologin,则该用户是不能登录到系统的。

[root@ftp pam.d]# chmod go+rx /var/ftproot #修改家目录权限

3. 修改/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

4. 添加以下选项(增加guest访问)guest_enable=YES

guest_username=vuser

5. 修改pam_service_name选项的值pam_service_name=vsftpd.mysql

四、启动vsftpd服务并验证

1. 启动vsftpd服务[root@ftp pam.d]# service vsftpd start

Starting vsftpd for vsftpd: [ OK ]

[root@ftp pam.d]#

2. 查看端口情况[root@ftp pam.d]# netstat -ntulp | grep :21

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 17662/vsftpd

[root@ftp pam.d]#

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

(1). tom用户登录[root@ftp pam.d]# yum install -y ftp

[root@ftp pam.d]# ftp localhost

[root@ftp pam.d]# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (localhost:root): tom

331 Please specify the password.

Password:

230 Login successful. #登录成功

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (127,0,0,1,102,198).

150 Here comes the directory listing.

226 Directory send OK.

ftp>

(2). jerry 用户登录[root@ftp pam.d]# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (localhost:root): jerry

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (127,0,0,1,161,81).

150 Here comes the directory listing.

226 Directory send OK.

ftp>

(3). Windows 下测试

182d4e9456ec2a3508a67a120ae0c7b1.png

五、关闭防火墙与SElinux

说明:博友可以看到我们这里可以登录,但有的朋友登录不了,是因为防火墙与SELinux,我们这里先关闭[root@ftp ~]# service iptables stop

[root@ftp ~]# service ip6tables stop

[root@ftp ~]# setenforce 0

setenforce: SELinux is disabled

[root@ftp ~]# getenforce

Disabled

这样就可以正常登录了,嘿嘿!

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

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

1、配置vsftpd为虚拟用户使用配置文件目录[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_dir

2、创建所需要目录,并为虚拟用户提供配置文件[root@ftp ~]# mkdir /etc/vsftpd/vusers_dir/

[root@ftp ~]# cd /etc/vsftpd/vusers_dir/

[root@ftp vusers_dir]# touch tom jerry

[root@ftp vusers_dir]# ls

jerry tom

[root@ftp vusers_dir]#

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

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

anon_upload_enable=YES

[root@ftp vusers_dir]# vim jerry

anon_mkdir_write_enable=YES

4. 修改 /etc/vsftpd/vsftpd.conf 配置[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf

anon_upload_enable=NO

anon_mkdir_write_enable=NO

[root@ftp ~]# service vsftpd restart

Shutting down vsftpd: [ OK ]

Starting vsftpd for vsftpd: [ OK ]

[root@ftp ~]#

5. 测试

(1). tom登录测试

c8ef511d1a7253601bbddbc86931bebb.png

(2). jerry 登录测试

2bbd30d7d88cd396a6a987f7b145f62a.png

所有演示全部结束!^_^ ……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实时监听mysql_java实时监控mysql数据库变化

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况对于数据库变化。还没有发现比较好用的监控数据库变化监控软件。今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化1、打开数据库配置文件my.ini (一般在数据库安装目录)(D:\MYS…

python中cmd如何切换盘_redis 中如何切换db

redis 中如何切换dbredis数据库个数是可以配置的,默认为16个如上图我们如何切换呢?我在redis客户端查询如下 通过用select N 你想要的数据库 就能切到对应的数据库去了每个数据库的key值不会冲突,是分开存储的java代码中如何切换redis db&…

mysql max字符串报错_mysql [Warning] max_join_size报错问题解决办法

文章介绍了关于mysql [Warning] max_join_size报错问题解决办法,有需要的同学看看。100716 06:32:45 d started100716 6:32:45 [Warning] option max_join_size: unsigned value 18446744073709551615 adjusted to 4294967295100716 6:32:45 [Warning] option max_join_size: u…

jdbc odbc java mysql数据库连接_Java数据库连接之配置ODBC数据源

java使用JDBC-ODBC桥接连接SQLServer数据库需要配置ODBC数据源,配置步骤如下:1.进入控制面板,找到管理工具2.看到ODBC数据源,有64位和32位的,如果你的数据库是64位的就要选择64位的,32位的数据库也要选择对…

kali mysql停止服务器_从零开始:手把手教你黑客入门攻破服务器并获取ROOT权限...

有许多人对神秘的黑客一直感兴趣,却苦于网上资料繁杂,无法入门,在学黑客之前,你要知道什么是黑客,黑客就是那些对计算机有着强烈探索欲的人,一个真正的黑客,必须要至少掌握一门编程技术和熟悉系…

堆排序不稳定的例子_【译】Python中的堆排序

作者:Olivera Popović翻译:老齐介绍堆排序是高效排序算法的另一个例子,它的主要优点是,无论输入数据如何,它的最坏情况运行时间都是O(n*logn)。顾名思义,堆排序在很大程度上依赖于堆数据结构——优先级队列…

安卓手机备份_安卓手机数据备份与恢复方法汇总和操作详解

世界那么大,谢谢你来看我!!关注我你就是个网络、电脑、手机小达人每次使用电脑时,我们都会自觉的将重要的文件保存好并且备份起来防止丢失。那同样的,我们在使用手机时,也要养成手机备份的好习惯。今天就来…

mysql索引的使用及优化方法_MySQL中索引和优化的用法总结

1、什么是数据库中的索引?索引有什么作用?引入索引的目的是为了加快查询速度。如果数据量很大,大的查询要从硬盘加载数据到内存当中。2、InnoDB中的索引原理是怎么样的?InnoDB是MySQL的默认存储引擎,InnoDB有两种索引:…

苹果屏幕上的小圆点_苹果或明年部署miniLED屏幕 最早用在Macbook上

中关村在线消息:苹果将举行WWDC 2020开发者大会即将召开,昨日,业内人士手机晶片达人透露:“苹果明年即将在Macbook上与iPad导入Mini LED产品,效果非常非常的好。相关供应链都开始动了起来。”苹果明年即将在Macbook上与…

mysql默认字符集和排序_MySQL字符集和排序规则

MySQL在创建数据库是,需要设置数据库的字符集和排序规则,如图所示:我觉得这里有必要解释下字符集和排序规则这两个概念。字符集说到字符集,需要先提下字符、字符集和字符编码这几个词的含义。字符(Character)是各种文字和符号的总…

图形驱动程序和显卡驱动什么区别_以后你的手机也需要单独安装显卡驱动程序了...

在桌面平台制造商通常会定期发布显卡驱动优化和提高性能,对于多数用户来说安装显卡驱动应该是很平常的事。不过在智能手机方面还不需要安装额外的驱动程序,因为制造商通常会通过每年的安卓系统更新来发布新版驱动。有趣的是从明年开始我们的智能手机也要…

有向加权图 最大弱连通分支_开盘引来大涨,当下股市最大的风险是它?

何为昨天的大涨定性?昨天的大涨,上午的加权量能水平达到了2921亿元,一个非常健康的温和放量状态;下午的加权量能水平快速下降到2242亿元的水平,这是略高于五日均量的量能水平;大幅高开,集合竞价…

axure文本框提示文字_Axure教程:一个中继器实现密码验证

本文给大家介绍用一个中继器实现axure登录时账号密码验证效果,一起来看看~实现效果如下图:工具/原料:账号文本框密码文本框登录按钮中继器记录密码的文本标签(隐藏)提示框(隐藏)验证按钮(隐藏)方法/步骤步骤1设置中继器:新增列acc…

深度学习 autoencoder_笔记:李淼博士-基于模仿学习的机器人抓取与操控

说明:本文是Techbeat平台上李淼博士的讲座:“基于模仿学习的机器人抓取与操控”的总结笔记。原视频:TechBeat - 让AI大有可为​www.techbeat.net视频介绍:近四十年来,研究人员对机器人抓取的研究逐渐深入,涉…

linux临时挂载别的文件目录_linux基础05:linux系统目录有哪些?命令行界面如何切换目录?...

我们安装好linux系统后,linux系统也会像windows系统一样,自动生成很多的文件和目录,这些目录都包含了不同的含义。下面,我们就来介绍一下这些目录都代表着什么?以及,在命令行界面,我们如何在不同…

抽象方法可以有方法体_什么方法可以祛斑?祛斑的方法有哪些?

现在是一个看脸的时代,可能不那么准确,但是也说明了人们对于美好脸蛋的追求。完美的脸蛋必定是光滑白皙没有瑕疵的,而有了色斑就会损害整个人的颜值。祛斑的方法有哪些?若是您正深受长斑的烦恼,小编专门寻找了一些简单有效的祛斑…

炫界 (978) -(建工发现应用克隆漏)_除了DMA,这些漏损点检测与漏损区域识别技术你知道么?...

漏损问题在给水管网中是普遍存在且难以避免的。据《2018年城市供水统计年鉴》显示,载入年鉴的各城市在2017年的管网漏损总量超过60亿m3,平均漏损率为14.56%,这与“水十条”明确规定的控漏目标相比仍存有差距。与此同时,居高不下的…

go语言 mysql卡死_一次mysql死锁的排查过程-Go语言中文社区

一次mysql死锁的排查过程一、背景17号晚上要吃饭了,看旁边的妹子和佐哥还在调代码,就问了下什么问题啊,还在弄,妹子说,在测试环境测试给用户并发发送卡券时,出现了死锁,但看代码没有死锁&#x…

怎么格式化电脑_U盘格式化后数据能恢复吗?人人都能学会的恢复方法!

获取专业数据恢复软件:专注硬盘U盘误删文件数据恢复软件免费下载​dl-next.aunbox.cn数据恢复官网:嗨格式数据恢复大师官网 - 专业U盘/电脑/硬盘数据恢复软件_免费下载​huifu.hgs.cnU盘格式化后数据能恢复吗?U盘在我们生活中算是比较常用的数…

java 运算符_详解Java表达式与运算符

课程导言【变量的赋值与计算都离不开表达式,表达式的运算依赖于变量、常量和运算符。本节课讨论Java的表达式的构成、常量的定义、运算符的分类及应用。通过本课的学习你将掌握运用表达式和运算符完成变量赋值、条件判断、数学运算、逻辑运算等功能操作】在讲述课程…