vsftp与mysql结合进行用户验证

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,编制者的初衷是代码的安全。

特性

1、它是一个安全、高速、稳定的FTP服务器;

2、它可以做基于多个IP的虚拟FTP主机服务器;

3、匿名服务设置十分方便;

4、匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;

5、不执行任何外部程序,从而减少了安全隐患;

6、支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;

7、可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;

8、支持多种认证方式

9、支持带宽限制;

本文介绍通过pam.d模块基于mysql现实vsftp虚拟用户认证

安装环境

先安装、配置vsftp

[[email protected] ~]# yum install -y vsftpd
[[email protected] ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd #vsftp日志轮询
/etc/pam.d/vsftpd #pam.d的vsftpd
/etc/rc.d/init.d/vsftpd #启动服务脚本
/etc/vsftpd
/etc/vsftpd/ftpusers #用户控制文件
/etc/vsftpd/user_list #用户控制文件
/etc/vsftpd/vsftpd.conf  #配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-2.2.2
##此处省略帮助文件##
/usr/share/doc/vsftpd-2.2.2/TUNING
/usr/share/doc/vsftpd-2.2.2/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub #匿名用户共享文件目录

查看默认配置文件启用选项

[[email protected] vsftpd]# cat  vsftpd.conf |grep -v "^#"
anonymous_enable=YES #允许匿名用户
local_enable=YES #允许本地用户
write_enable=YES #允许本地用户可写
local_umask=022  #本地创建文件的umask
dirmessage_enable=YES #创建目录时消息提示
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES
listen=YES #监听端口

pam_service_name=vsftpd #pam模块
userlist_enable=YES #用户控制
tcp_wrappers=YES

其他一些重要选项

anonymous_enable=YES    开始匿名用户

anon_upload_enable=YES  允许匿名用户上传文件

anon_mkdir_write_enable=YES  允许匿名用户创建目录

anon_other_write_enable=YES  允许匿名用户其他权限,如删除,重命名文件

chown_uploads=YES #是否改变属主

chown_username=user #上传文件修改成属主

chroot_local_user={Yes|No}    #限制本地用户禁锢其在家目录中

chroot_list_enable={Yes|No}   #限制chroot_list列表中用户禁锢其在家目录中

chroot_list=/etc/vsftp/chroot_list #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录

xferlog_file=/var/log/vsftp.log  # 配置日志目录

ftpd_banner=Welcome to blah FTP service. #登录提示信息

banned_file=/etc/vsftpd/banned_file

ls_recurse_enable=YES #用户是否能够使用ls命令

连接限制

max_clients 最大并发链接数

max_per_ip  每IP最大并发数

限制速率

anon_max_rate

local_max_rate

上传文件umask

anon_umask 022

local_umask 022

虚拟用户设置

guest_enable= YES/NO  #启用虚拟用户。默认值为NO。

guest_username=ftp   #这里用来映射虚拟用户。默认值为ftp

user_config_dir=/etc/vsftpd/vusers_config  #为虚拟用户提供配置文件

配置文件里面启用下面选项

ls_recurse_enable=YES

添加测试用户

ls_recurse_enable=YES
[[email protected] ~]# useradd -s /sbin/nologin test #添加测试用户
[[email protected] ~]# password test
[[email protected] ~]# touch /home/test/abc.txt #下创建个测试文件
[[email protected] ~]#service vsftpd start
[[email protected] ~]# lftp [email protected]
lftp [email protected]:/> ls     
-rw-r--r--    1 0        0               0 Sep 29 01:44 abc.txt
#test账户可用。

在本地上安装msyql-devel包、pam_mysql包

[[email protected] vsftpd]# yum install -y mysql-devel pam_mysql

在192.168.0.55mysql上给vsftp授权

MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> grant all on vsftpd.* to [email protected] identified by ‘www.magedu.com‘;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> use vsftpd;
MariaDB [vsftpd]> create table users (
 id int AUTO_INCREMENT NOT NULL,
 name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
 primary key(id)
 );
MariaDB [vsftpd]> insert into users(name,password) values(‘tom‘,password(‘magedu‘));
MariaDB [vsftpd]> insert into users(name,password) values(‘test‘,password(‘magedu‘));
MariaDB [vsftpd]> show tables;
+------------------+
| Tables_in_vsftpd |
+------------------+
| users            |
+------------------+
1 row in set (0.03 sec)

回到vsftpd主机,查看是否能够链接到mysql

[[email protected] vsftpd]# mysql -uvsftpd -h192.168.0.55 -p
Enter password: 

mysql> use vsftpd;

mysql> select * from users;
+----+---------+-------------------------------------------+
| id | name    | password                                  |
+----+---------+-------------------------------------------+
|  1 | tom     | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
|  2 | test    | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
+----+---------+-------------------------------------------+
4 rows in set (0.01 sec)

已OK

vi /etc/pam.d/vsftpd.mysql  #添加如下两行

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=192.168.0.55 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=192.168.0.55 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

再次编译配置文件/etc/vsftpd/vsftpd.conf

确保下面选项是OK

anonymous_enable=NO

local_enable=YES

write_enable=YES

chroot_local_user=YES

pam_service_name=vsftpd.mysql

vi /etc/vsftpd/vusers_config/tom

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

给test家目录授权,有些虚拟用户都会到test家目录执行读写,所以要给test家目录读写权限。

[email protected] vsftpd]# chmod 777 /home/test/
[[email protected] vsftpd]# cd /etc/
[[email protected] etc]# lftp [email protected]  #tom不是本地用户,是在mysql创建的一个虚拟用户
Password: 
lftp [email protected]:/> ls
-rw-r--r--    1 0        0               0 Sep 29 01:44 abc.txt
lftp [email protected]:~> put issue   
47 bytes transferred                     
lftp [email protected]:/> ls
-rw-r--r--    1 0        0               0 Sep 29 01:44 abc.txt
-rw-------    1 500      500            47 Sep 29 02:31 issue
[[email protected] etc]# cd /home/test/
[[email protected] test]# ll
total 4
-rw-r--r-- 1 root root  0 Sep 29 09:44 abc.txt
-rw------- 1 test test 47 Sep 29 10:31 issue #tom用户以test身份执行put
时间: 2024-07-31 10:27:29

vsftp与mysql结合进行用户验证的相关文章

vsftp基于mysql的虚拟用户,iptables的用法

vsftp基于mysql创建虚拟用户 1.首先安装环境 yum groupinstall -y "Development Tools" "Server PlatformDevelopment" yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 下载最新的pam-mysql http://pam-mysql.sourceforge.net/ 编译安装pam-mysql tar x

VSFTP+MySQL虚拟用户配置

VSFTP+MySQL虚拟用户配置 1. 安装vsftp软件 下载vsftp(最新版本)软件: wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.1.0.tar.gz 如果要开始ssl功能的话,安装vsftp之前要先安装openssl-0.9.8g.tar.gz包 [[email protected] ftp]# tar xzvf openssl-0.9.8g.tar.gz [[email protected] ftp]# cd openssl

MySql中添加用户/删除用户

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:

Vsftp安装及配置虚拟用户

Vsftp安装及配置虚拟用户 一.安装 采用yum安装 [[email protected]_64_122_centos vsftpd]# yum installvsftpd 安装完成以后vsftpd的默认配置文件在/etc/vsftpd 二.建立虚拟用户的过程 1,创建虚拟用户文本文件,添加虚拟用户和密码 [[email protected]_64_122_centos vsftpd]# vivuser.txt 奇数行是用户名,偶数是密码. 比如: admin [email protected

mysql 数据库新增用户

1.user表中host为%含义: Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1.这里的意思就是说root用户只能通过192.168.1.1的客户端去访问. 而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为"192.168.1."的客户端都可以连接.如果Host=%,表示所有IP都有连接权限.. 这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故,为了省事. 2.user表中

MySQL数据库的用户管理、数据库备份与恢复

MySQL 是一个真正的多线程.多用户的 SQL 数据库服务,凭借其高性能.高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统.在2008年以前,MySQL 项目由 MySQL AB 公司进行开发.发布和支持,之后历经 Sun 公司收购 MySQL AB 公司,Oracle 公司收购 Sun 公司的过程,目前 MySQL 项目由 Oracle 公司负责运营和维护. MySQL 数据库的用户管理 新建用户mysql -u root -p ##登录数据库use mysql; ##进入m

设置、修改及找回 MySQL 数据库 root 用户的密码

1. MySQL 数据库用户安全策略介绍 安装 MySQL 数据库后,默认的管理员 root 密码为空,很不安全,需要设置密码.针对 MySQL数据库的用户处理,还有更严格的做法: ① 增加 system 并提升权限为超级管理员,即和 root 等价的用户,只是名字不同.     mysql> grant all privileges on *.* to [email protected]'localhost' identified by 'alinuxer123' with grant opt

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:

第三篇 ubuntu下,mysql 的root用户密码忘了怎么办?

好长一段时间没有使用ubuntu了,今天进来玩玩,结果连mysql的root用户密码都忘记了.就上网找了一下,发现如下解决办法,试了一下,可行!记录在此,环境问题,是需要注意的. Ubuntu Server 12.04 LTS,用 apt-get 安装 MySQL 过程中没有提示设置 root 账号的密码,安装完成后发现 root 空密码无法登录. 解决方案: 其实 debian 系的 MySQL 安装过程中会设置一个默认的账户,这个文件里保存了默认账号的信息 cat /etc/mysql/de