搭建FTP+PAM+MySQL环境
搭建FTP+PAM+MySQL环境
1 搭建环境: CentOS6.5或CentOS6.7
[root@vhost3 ~]# uname -a Linux vhost3 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
2 yum安装安装MySQL、vsftpd,需要的依赖包,大多是系统自带的,即使最小化安装也会有
yum install -y vsftpd mysql-server mysql-devel mysql-libs
3 安装pam
# 安装依赖包
yum install -y pam-devel fprintd-pam pam_passwdqc pam
# 编译安装pam,适用于yum安装的MySQL
[root@localhost]#wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz [root@localhost]#tar xvf pam_mysql-0.7RC1.tar.gz [root@localhost]#cd pam_mysql-0.7RC1 [root@localhost]# ./configure --with-openssl --with-pam-mods-dir=/lib/security/ [root@localhost]# make && make install
# 安装完成后,会生成如下两个文件
/lib/security/pam_mysql.la /lib/security/pam_mysql.so
4 修改vsftpd配置文件(参考)
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=kdui_ftp # pam认证的配置文件 userlist_enable=YES tcp_wrappers=YES guest_enable=YES # 启用虚拟用户 guest_username=kdui_ftp # 虚拟用户的权限是寄宿在操作系统的kdui_ftp这个用户上的,这个用户必须真实存在 local_root=/home/dms/kdui/dmsdata/userBase/$USER #指定用户登录的家目录,$USER是内置变量,表示用户名 user_sub_token=$USER virtual_use_local_privs=YES xferlog_file=/var/log/xferlog dual_log_enable=YES vsftpd_log_file=/var/log/vsftpd user_config_dir=/etc/vsftpd/user_config #每个虚拟用户的独立配置文件目录,配置文件和用户同名
5 根据vsftpd配置文件配置系统环境
# 创建宿主账号的家目录
[root@localhost]#mkdir -p /home/dms/kdui/dmsdata/
# 创建虚拟用户宿主账号
[root@localhost]# useradd -s /sbin/nologin -d /home/dms/kdui/dmsdata/userBase/ kdui_ftp
# 创建虚拟用户配置文件目录,(按上述配置文件可以不创建)
[root@localhost]# mkdir -p /etc/vsftpd/user_config
6 修改pam认证文件
[root@localhost]# vim /etc/pam.d/kdui_ftp #%PAM-1.0 session optional pam_keyinit.so force revoke auth required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=ftp table=ftpuser usercolumn=username passwdcolumn=password crypt=0 account required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=ftp table=ftpuser usercolumn=username passwdcolumn=password crypt=0 # 调用的模块 数据库用户名 密码 IP 库名 表名 哪个字段作为用户名 哪个字段作为密码 # crypt表示密码是否加密以及加密方式,0表示明文,1表示使用UNIX的DES加密,2表示使用MySQL的password()函数,3表示口令使用MD5加密
7 配置MySQL数据库
# 启动数据库
[root@localhost]# /etc/init.d/mysqld start
# 连接数据库
[root@localhost]# mysql -uroot
# 建库
mysql> CREATE DATABASE IF NOT EXISTS `ftp` ;
mysql> use ftp;
# 建表
mysql> CREATE TABLE IF NOT EXISTS `ftpuser` ( `id` int(6) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `status` int(1) NOT NULL DEFAULT '1', `level` int(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
# 插入两条数据即ftp虚拟用户
mysql> INSERT INTO `ftpuser` (`username`, `password`) VALUES ( 'aaa', '123'); mysql> INSERT INTO `ftpuser` (`username`, `password`) VALUES ( 'bbb', '456');
# 授权pam验证用的mysql账号
mysql> grant select on ftp.ftpuser to ftp@localhost identified by '123456'; mysql> FLUSH PRIVILEGES; mysql> quit;
8 启动ftp
[root@loaclhost]#/etc/init.d/vsftpd start
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现