vsftpd-2.0.5+mysql-5.5+pam_mysql构建虚拟用户访问

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

 一, 实验环境:redhat 5.8,软件版本:vsftpd-2.0.5-24.el5, pam_mysql-0.7RC1.tar.gz,mysql-5.5.25a.tar.gz,cmake-2.8.8.tar.gz

二,实验目的:用mysql管理虚拟用户来访问vsftp服务器。

三,安装编译软件的环境:需要安装

[root@server30 ~]# yum -y groupinstall 'Development Libraries' 'Development Tools'

四,由于mysql-5.5编译安装不支持make编译,而用是cmake来编译,因此需要先安装cmake,cmake安装很简单,就底下三步

[root@server30 ~]# tar xf cmake-2.8.8.tar.gz  [root@server30 ~]# cd cmake-2.8.8 [root@server30 cmake-2.8.8]# ./bootstrap  [root@server30 cmake-2.8.8]# make && make install

五,安装好之后,编译msyql,编译mysql之前先添加mysql用户

[root@server30 ~]# useradd -r mysql

六,开始编译mysql-5.5

[root@server30 ~]# tar xf mysql-5.5.25a.tar.gz   [root@server30 mysql-5.5.25a]#  cmake . DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ (安装路径)  > -DMYSQL_DATADIR=/data/mysql \ (数据存储目录)  > -DSYSCONFDIR=/etc \  (配置文件存储路径)  > -DWITH_INNOBASE_STORAGE_ENGINE=1 \ (安装innodbase存储引擎下两都是)  >  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \  >   -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   > -DWITH_SSL=system \ (启用ssl加密)  > -DWITH_ZLIB=system \ (启用客户端与服务端压缩传输)  >  -DWITH_LIBWRAP=0 \  (关闭tcpwrap的控制)  > -DDEFAULT_CHARSET=utf8 \ (使用utf8为默认字符)  >  -DDEFAULT_COLLATION=utf8_general_ci \ (使用utf8默认字符排序)  > -DEXTRA_CHARSETS=all  (安装所有字符)  [root@server30 mysql-5.5.25a]# make && make install

安装完了之后,开始初始化数据库

在解压的路径下,或安装完的路径中,都有mysql的脚本与配置文件在supports目录下

[root@server30 mysql]# cp support-files/my-large.cnf /etc/my.cnf 提供配置文件[root@server30 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 提供脚本 [root@server30 mysql]# mkdir -pv /data/mysql 创建数据存储目录[root@server30 mysql]# chown  -R mysql:mysql /data/ 修改data目录的权限[root@server30 mysql]# chown -R :mysql .(对mysql做初始化,需要修改/user/local/mysql所有文件的权限) [root@server30 mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ 对mysql初始化

修改mysql.cnf配置文件,

[root@server30 mysql]#vim /etc/mysql.cnf 在这里修改一行thread_concurrency = 4并在后面添加一行datadir = /data/mysql

启用mysql脚本:

[root@server30 mysql]# service mysqld start [root@server30 mysql]# vim /etc/profile  添加mysql命令到PATH[root@server30 mysql]# . /etc/profile(或者export PATH=$PATH:/usr/local/mysql/bin) [root@server30 mysql]# ln -sv /usr/local/mysql/include/ /usr/include/mysql  [root@server30 mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf 加载库文件  [root@server30 mysql]# ldconfig -v |grep mysql [root@server30 mysql]# vim /etc/man.config

mysql到此为止。可以用mysql命令连接数据库测试下,能否正常连接。

七,安装pam-mysql,使pam支持到mysql数据库中查找用户

[root@server30 ~]# tar xf pam_mysql-0.7RC1.tar.gz [root@server30 ~]# cd pam_mysql-0.7RC1 [root@server30 pam_mysql-0.7RC1]# ./configure --with-mysql=/usr/local/mysql --with-openssl [root@server30 pam_mysql-0.7RC1]# make && make install

八,安装vsftp:

使用yum -y install vsftpd

九,下面开始创建虚拟用户。虚拟用户是存在一张表中,而表是存在库中,因此先创建一个数据库,按以下步骤

 
 
  1. mysql> create database vsftp; 创建vsftp的数据库

  2. mysql> grant select on vsftp.* to vsftpd@localhost identified by 'redhat';

  3. 授权vsftpd用户对vsftp数据库的所有表只有查询权限,并且密码是redhat 

  4. mysql> grant select on vsftp.* to vsftpd@127.0.0.1 identified by 'redhat'; 


mysql> use vsftp; 切换到到vsftp数据库mysql> create table users ( 创建users表    -> id int AUTO_INCREMENT NOT NULL, 设定字段id 自动增长型。    -> name char(20)  NOT NULL,      -> passwd char(48)  NOT NULL,     -> primary key(id) 设置id为主键     -> );

添加测试的虚拟用户,密码采用加密存放

mysql> insert into users(name,passwd) values('redhat',password('admin')); mysql> insert into users(name,passwd) values('centos',password('admin'));

 编辑/etc/pam.d/vsftpd

 
 
  1. vim /etc/pam.d/vsftpd将原来的内容注释添加下面两行  

  2. auth required pam_mysql.so user=vsftpd passwd=redhat host=localhost db=vsftp table=users   

  3. usercolumn=name passwdcolumn=passwd crypt=2  

  4. 这两行是一行,user=vsftpd就是grant授权时创建的用记,db是指定数据库usercolumn是name

  5. 字段,passwdcolumn是user表中的密码字段,cryptt=2表示用户与密码加密传送
    account required pam_mysql.so user=vsftpd passwd=redhat host=localhost db=vsftp table=users   

  6. usercolumn=name passwdcolumn=passwd crypt=2 

建立虚拟用户映射的账号,当虚拟用户登录到vsftp服务器时,会被映射到vsftp用户,且所登录的目录为vsftpd的家目录。

[root@server30 ~]#useradd -s /sbin/nologin -d /var/ftp2 vsftp [root@server30 ~]chmod go+rx /var/ftp2

编辑/etc/vsftpd/vsftpd.conf

请确保/etc/vsftpd.conf中已经启用了以下选项 anonymous_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO local_enable=YES 添加以下选项 guest_enable=YES guest_username=vsftp pam_service_name=vsftpd chroot_local_user=YES

此时关闭selinux,重启vsftpd服务,并启动测试。

打开window的命令行窗口,输入ftp 192.168.0.130(此ip为我ftp的IP),并输入虚拟用户和密码,能否登录成功。也可以在本机上上测试,输入

[root@server30 ~]# ftp localhost   Connected to localhost.localdomain.   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 (localhost:root): redhat   331 Please specify the password.   Password:   230 Login successful. 认证成功  Remote system type is UNIX.   Using binary mode to transfer files.

十,设置虚拟用户的权限,编辑/etc/vsftpd/vsftpd.conf,最后一行添加一行。

user_config_dir=/ftp 这个目录的作用是让每个用户在这个新建一个与虚拟用户同名的文件,里面设置虚拟用户的权限

下面新建/ftp目录

mkdir /ftp  vim /ftp/redhat,下面添加添加给redhat用户的权限  如果只给上传权限则,则写下面三行  anon_uplocad_enable=YES  anon_mkdir_write_enable=NO  其实下面这两行可以不用写,因为在配置文件已经将anon的anon_other_enable=NO        大部分权限关闭了。

重启vsftpd服务并测试。










本文转自 deng304749970 51CTO博客,原文链接:http://blog.51cto.com/damondeng/935635,如需转载请自行联系原作者
目录
相关文章
|
29天前
|
安全 关系型数据库 数据管理
DMS产品常见问题之香港地区RDS开启安全访问代理失败如何解决
DMS(数据管理服务,Data Management Service)是阿里云提供的一种数据库管理和维护工具,它支持数据的查询、编辑、分析及安全管控;本汇总集中了DMS产品在实际使用中用户常遇到的问题及其相应的解答,目的是为使用者提供快速参考,帮助他们有效地解决在数据管理过程中所面临的挑战。
|
6月前
|
关系型数据库 MySQL 网络安全
mysql只能通过ssh通道连接到内网,如何创建只能访问MySQL的SSH用户
mysql只能通过ssh通道连接到内网,如何创建只能访问MySQL的SSH用户
334 0
|
6月前
|
SQL 关系型数据库 MySQL
软件测试|使用PyMySQL访问MySQL数据库的详细指南
软件测试|使用PyMySQL访问MySQL数据库的详细指南
46 0
|
2月前
|
关系型数据库 MySQL Linux
docker构建mysql以及多实例
docker构建mysql以及多实例
26 0
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
使用Docker构建本地Mysql容器及配置
使用Docker构建本地Mysql容器及配置
54 1
|
9月前
|
SQL 存储 安全
使用 SpringBoot 访问 MySQL 数据库
创建一个 MySQL 数据库,构建一个 Spring 应用程序,并将其连接到新创建的数据库。
120 0
|
9月前
|
SQL Oracle 关系型数据库
深度解析 MySQL 事务、隔离级别和 MVCC 机制:构建高效并发的数据交响乐(一)
深度解析 MySQL 事务、隔离级别和 MVCC 机制:构建高效并发的数据交响乐
317 0
|
4月前
|
存储 关系型数据库 MySQL
4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问
4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问
36 0
4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问
|
5月前
|
关系型数据库 MySQL API
如何为RAM子账号授予单一RDS实例的访问权限?
在阿里云中,如何为RAM子账号进行精准授权,授予单一RDS实例的访问权限?这篇文档帮到你
62012 0
|
7月前
|
缓存 NoSQL 关系型数据库
课时3:通过缓存来加速数据库访问(MySQL+Redis)
课时3:通过缓存来加速数据库访问(MySQL+Redis)
151 0