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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

 一, 实验环境: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,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
网络协议 关系型数据库 MySQL
如何在Android Termux上安装MySQL并实现公网远程访问?
如何在Android Termux上安装MySQL并实现公网远程访问?
138 0
|
7月前
|
网络协议 关系型数据库 MySQL
如何使用宝塔面板搭建MySQL数据库并实现无公网IP远程访问
如何使用宝塔面板搭建MySQL数据库并实现无公网IP远程访问
767 3
|
2月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
138 1
|
4月前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之如何跨账号访问同一个MySQL
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
24天前
|
关系型数据库 MySQL PHP
PHP与MySQL的无缝集成:构建动态网站的艺术####
本文将深入探讨PHP与MySQL如何携手合作,为开发者提供一套强大的工具集,以构建高效、动态且用户友好的网站。不同于传统的摘要概述,本文将以一个生动的案例引入,逐步揭示两者结合的魅力所在,最终展示如何通过简单几步实现数据驱动的Web应用开发。 ####
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
574 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
21天前
|
关系型数据库 MySQL PHP
PHP与MySQL的深度整合:构建高效动态网站####
在当今这个数据驱动的时代,掌握如何高效地从数据库中检索和操作数据是至关重要的。本文将深入探讨PHP与MySQL的深度整合方法,揭示它们如何协同工作以优化数据处理流程,提升网站性能和用户体验。我们将通过实例分析、技巧分享和最佳实践指导,帮助你构建出既高效又可靠的动态网站。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和实用的技能。 ####
18 0
|
7月前
|
关系型数据库 MySQL 数据库连接
解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)用户访问拒绝
解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)用户访问拒绝
2404 52
解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)用户访问拒绝
|
5月前
|
监控 关系型数据库 MySQL
MySQL装机实战指南:从零开始构建高效数据库环境
通过本文的指南,您应该已经成功安装了MySQL,并对其进行了基本的配置和优化。MySQL是一个功能强大、灵活的数据库管理系统,通过不断的学习和实践,您将能够充分利用其潜力来满足您的业务需求。记住,定期备份数据库、更新软件以及进行性能监控是保持数据库环境健康和高效的关键。希望本文能对您有所帮助!
223 2
下一篇
DataWorks