FTP服务器-vsftp pam mysql

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

一、安装所需要程序

1.事先安装好开发环境和mysql数据库

1
2
#yum -y install mysql-server mysql-devel
#yum -y install groupinstall "Development Tools" "Development Libraries"

2.安装pam_mysql-0.7RC1

1
2
3
4
5
#tar zxvf pam_mysql-0.7RC1.tar.gz
#cd pam_mysql-0.7RC1
#./configure --with-mysql=/usr --with-openssl
#make
#make install

3.安装vsftp

1
#yum -y install vsftpd

二、创建虚拟用户账号

1.准备数据库及相关表

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

1
2
3
4
5
6
7
8
9
mysql>create databases vsftpd;
mysql>grant  select  on vsftpd.* to vsftpd@localhost identified by  '密码' ;
mysql>grant  select  on vsftpd.* to vsftpd@127.0.0.1 identified by  '密码' ;
mysql>flush privileges;
mysql>use vsftpd;
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 ));

2.添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将密码采用明文格式存储,原因是pam_mysql的password()函数与Mysql的password()函数可能会有所不同。

1
2
   mysql>insert into  users (name,password) values( 'tom' , 'passwd1' );
   mysql>insert into  users (name,password) values( 'jerry' , 'passwd2' );

三、配置vsftpd

1.建立pam认证所需文件

1
#vi /etc/pam.d/vsftpd.mysql

添加如下两行

1
2
auth required  /lib/security/pam_mysql .so user=vsftpd  passwd =密码 host=localhost db=vsftpd table= users  usercolumn=name passwdcolumn=password crypt=0
account required  /lib/security/pam_mysql .so user=vsftpd  passwd =密码 host=localhost db=vsftpd table= users  usercolumn=name passwdcolumn=password crypt=0

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录

1
2
#useradd -s /sbin/nologin -d /var/ftproot vuser
#chmod go+rx /var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项

1
2
3
4
5
6
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项

1
2
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示

1
pam_service_name=vsftpd.mysql

四、启动vsftpd服务

1
2
# service vsftpd start
# chkconfig vsftpd on

查看端口开启情况

1
2
# netstat -tnlp |grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286 /vsftpd

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

1
# ftp localhost

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

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

1、配置vsftpd为虚拟用户使用配置文件目录

1
# vim vsftpd.conf

添加如下选项

1
user_config_dir= /etc/vsftpd/vusers_dir

2、创建所需要目录,并为虚拟用户提供配置文件

1
2
3
# mkdir /etc/vsftpd/vusers_dir/
# cd /etc/vsftpd/vusers_dir/
# touch tom jerry

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

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

1
anon_upload_enable=YES

问题:

1.使用命令ftp ip登录ftp服务是,一直登录不了。查看/var/log/secure出现以下信息:

1
Apr 25 17:43:04 Centos vsftpd[18845]: pam_mysql - MySQL error (Can 't connect to local MySQL server through socket ' /var/lib/mysql/mysql .sock' (13))

解决:由于Linux没有关闭selinux导致,使用用命令setenforce 0临时关闭或编辑/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled重启机器即可。










本文转自 SoulMio 51CTO博客,原文链接:http://blog.51cto.com/bovin/1837003,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
93 28
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
65 13
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
106 25
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
320 0
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
220 12
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
本文深入解析了利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,通过分析FreeFlow FTP 1.75版本的漏洞,展示了如何通过构造过长的用户名触发缓冲区溢出并调用计算器(`calc.exe`)。文章详细介绍了攻击原理、关键代码组件及其实现步骤,并提出了有效的防范措施,如输入验证、编译器保护和安全编程语言的选择,以保障系统的安全性。环境搭建基于Windows XP SP3和Kali Linux,使用Metasploit Framework进行攻击演示。请注意,此内容仅用于教育和研究目的。
138 4
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
206 3
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
868 18
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等