首页 > 数据库 >mysql+vsftpd 实现FTP的虚拟用户

mysql+vsftpd 实现FTP的虚拟用户

时间:2024-08-09 23:41:25浏览次数:6  
标签:FTP 用户 virtual vsftpd mysql YES root

mysql+vsftpd   实现FTP的虚拟用户

1)安装相关软件包

下载mysql pam验证的软件包

wget http://mirrors.sohu.com/fedora-epel/6Server/x86_64/pam_mysql-0.7-0.12.rc1.el6.x86_64.rpm

http://mirrors.sohu.com/fedora-epel/6Server/x86_64/

此网站是RHEL 6.x的epel相关的软件包的地址(可以把epel也做一个yum仓库)

yum -y install mysql-server    mysql-devel  pam_mysql  vsftpd

mysql-server :mysql服务器的软件包

mysql-devel  :mysql服务器的开发包

pam_mysql    :  实现mysql虚拟用户认证的包

vsftpd       :提供ftp服务的软件包

2)建立访问ftp的根目录及虚拟用户对应的系统账号

[root@jie3 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual

#此用户不能登录系统,-d指定此用户的家目录

[root@jie3 vsftpd]# chown virtual:virtual /var/ftproot/

[root@jie3 vsftpd]# chmod 755 /var/ftproot/

3)在mysql数据库服务器上创建存放用户名和密码的表

[root@jie1 ~]# service mysqld start   #初次启动mysqld服务会等待些时间

Starting mysqld:                                           [  OK  ]

[root@jie1 ~]# mysqladmin -u root password 'redhat'  #给登录mysql服务器的root用户设置密码

[root@jie1 ~]# mysql -u root -p

Enter password:

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

Your MySQL connection id is 4

Server version: 5.1.66 Source distribution

Copyright (c) 2000, 2012, 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.

mysql> show databases;      #显示所有的数据库

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

| Database           |

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

| information_schema |

| mysql              |

| test               |

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

3 rows in set (0.00 sec)

mysql> create database ftpdb;   #创建一个存放ftp虚拟用户的数据库

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

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

| Database           |

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

| information_schema |

| ftpdb              |

| mysql              |

| test               |

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

4 rows in set (0.02 sec)

mysql> use ftpdb;   #切换到创建的数据库中

Database changed

mysql> create table users (name char(16) binary,passwd char(16) binary);

       #在ftpdb数据库中新建一张有两个字段名为users的表,一个字段存放用户,一个字段存放用户的密码。

Query OK, 0 rows affected (0.03 sec)

mysql> insert into users (name,passwd) values ('tom','123');

       #在users表中插入一条数据,name为tom,密码为123

Query OK, 1 row affected (0.00 sec)

mysql> insert into users (name,passwd) values ('jerry','456');

       #在users表中在插入一条数据,name为jerry,密码为456

Query OK, 1 row affected (0.00 sec)

mysql> select * from ftpdb.users;

       #查询ftpdb数据库中表users的所有数据

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

| name  | passwd |

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

| tom   | 123    |

| jerry | 456    |

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

2 rows in set (0.00 sec)

mysql> grant select on ftpdb.users to virtual@localhost identified by 'virtual';

  #grant关键用于设置权限,on后面接数据库的表名, to接用户名,identified by 'virtual',设置virtual用户的密码

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;  #刷新同步数据

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

[root@jie1 ~]#

4)建立pam认证文件

[root@jie1 ~]# find  / -name 'pam_mysql*'  #查找一下pam认证支持mysql的库文件

/lib64/security/pam_mysql.so

[root@jie1 ~]# cat > /etc/pam.d/mysql_vsftpd << EOF

#%PAM-1.0

auth required /lib64/security/pam_mysql.so user=virtual passwd=virtual host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passwd crypt=0

account required /lib64/security/pam_mysql.so user=virtual passwd=virtual host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passwd crypt=0

EOF

#/lib64/security/pam_mysql.so 指定pam认证支持mysql的库文件的路径

#user=virtual passwd=virtual 指定用户和用户的密码,此用户对数据库有select权限

#crypt表示口令字段中口令的加密方式: crypt=0,口令以明文方式(不加密)保存在数据库中;

#db=ftpdb table=user 指定在数据库服务器新建的数据库和表

5)修改配置文件,使vsftpd能支持虚拟用户

######修改/etc/vsftpd/vsftpd.conf配置文件的内容###############

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES        #启用用户映射功能

guest_username=virtual  #将用户映射为之前创建的不能登录系统的用户virtual

virtual_use_local_privs=NO

pam_service_name=mysql_vsftpd  #指定pam认证的文件

local_root=/var/ftproot#指定ftp的根目录

user_config_dir=/etc/vsftpd/chroot_list#指定给用户配置权限目录的路径

6)创建为虚拟用户分配权限的目录,及设置虚拟用户权限的文件,此文件必须以虚拟用户名命名。用户名为mysql表users中的用户

[root@jie1 vsftpd]# mkdir /etc/vsftpd/chroot_list #创建配置文件中user_config_dir关键字定义的目录

[root@jie1 vsftpd]# touch chroot_list/tom  #在此目录下创建数据库users表中存在的用户,且以用户名命名文件

[root@jie1 vsftpd]# touch chroot_list/jerry

[root@jie1 vsftpd]# cd chroot_list/

[root@jie1 chroot_list]# ls

jerry  tom

[root@jie1 chroot_list]# echo "anon_upload_enable=YES" >tom

[root@jie1 chroot_list]# cat > jerry << EOF

> anon_upload_enable=YES

> anon_mkdir_write_enable=YES

> EOF

[root@jie1 chroot_list]# cat tom

anon_upload_enable=YES

[root@jie1 chroot_list]# cat jerry

anon_upload_enable=YES

anon_mkdir_write_enable=YES

[root@jie1 chroot_list]# service vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

[root@jie1 chroot_list]#

#当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限

#当virtual_use_local_privs=NO时,

#      anon_upload_enable=YES时,匿名用户能上传,但不能覆盖和改写删除文件

#      anon_mkdir_write_enable=YES时,能建立目录

#      anon_other_write_enable=YES时,虚拟用户具有读写权限,和删除权限

7)验证不同的用户的权限

小结:为企业搭建基于虚拟用户的vsftpd是非常有必要的,虚拟用户的用户不属于服务器中的用户,这样可以保障服务器的安全隐患。

标签:FTP,用户,virtual,vsftpd,mysql,YES,root
From: https://www.cnblogs.com/smoke520/p/18351712

相关文章

  • linux下的mysql语句命令大全
    1.linux下启动mysql的命令:mysqladminstart/ect/init.d/mysqlstart(前面为mysql的安装路径)2.linux下重启mysql的命令:mysqladminrestart/ect/init.d/mysqlrestart(前面为mysql的安装路径)3.linux下关闭mysql的命令:mysqladmin-uroot-p......
  • Linux下修改Mysql的用户(root)的密码
    修改的用户都以root为列。一、拥有原来的myql的root的密码;  方法一:在mysql系统外,使用mysqladmin#mysqladmin-uroot-ppassword"test123"Enterpassword:【输入原来的密码】 方法二:通过登录mysql系统,#mysql-uroot-pEnterpassword:【输入原来的密码】mys......
  • 0001初识MySQL
    ##内容参考网课##笔记整理一,数据库基础知识1.数据库概念英文名称:Database,即存储数据的仓库;专业解释为存储在计算机磁盘上的有组织,可供享的大量数据的集合 类型关系数据库与非关系数据库两类,前者包含MySQL,Oracle,SQL,Server,SQLite等,后者包含Redis,MongoDB等数据库管理系......
  • 使用Linux实现FTP云盘1
    关于FTP服务器FTP(文件传输协议)服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是FileTransferProtocol(文件传输协议)。程序运行,服务端不断接收客户端指令,服务端可同时处理多个客户端接入并对指令作出解析,并把执行结果返回给客户端,客户......
  • MySQL(3)--SQL函数
    MySQL函数数字函数CEIL(x)/CEILING(x)向上取整selectceil(column_name)fromtable_name;FLOOR(x)向下取整selectfloor(column_name)fromtable_name;POW(x,y)/POWER(x,y)返回x的y次方selectname,age,POW(age,2)fromstudents;RAND()返回0到1的......
  • 基于flask+vue框架的基于MySQL的房屋中介系统[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和房地产市场的蓬勃发展,房屋中介行业作为连接房东与租客、买家的桥梁,其重要性日益凸显。然而,传统房屋中介管理方式多......
  • mysql数据库:字符串函数
    mysql数据库:字符串函数mysql数据库:字符串函数concat(str1,str2,…strn)连接str1,str2,…,strn为一个字符串selectconcat('abc','def')replace(str,a,b)用字符串b替换str中所有出现的字符串ainsert(str,x,y,instr)将字符串str,从索引x开始,y个字符长度的子串替换为i......
  • 微信小程序上传图片链接到MySQL数据库
    我们首先要了解调用微信的api来上传图片他会在本地缓存来生成一个图片链接只能在你上传图片的设备打开当你清缓存之后这个链接也就失效了这个链接发给别人别人看不到图片相当于在同一网域局也“无”法打开这时候我们要借助外力例如引入vantWeapp组件库这个 VantWea......
  • 使用Python操作MySQL的多种方式
    目录MySQL简介安装与配置使用MySQLConnector/Python连接数据库执行SQL语句处理查询结果事务管理使用SQLAlchemy安装SQLAlchemy连接数据库定义模型执行查询事务管理使用DjangoORM安装Django配置数据库定义模型执行查询事务管理总结MySQL简介MySQL是一种开源的关系......
  • 如何在 Windows 10 环境下安装和配置 MySQL:初学者指南
    如何在Windows10环境下安装和配置MySQL:初学者指南MySQL是一个流行的开源数据库管理系统,广泛应用于各种应用程序中。对于初学者来说,了解如何在Windows10环境下安装和配置MySQL是一个重要的第一步。本篇博客将详细介绍如何完成这些步骤,确保你能顺利地启动和使用MySQL......