服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

建立数据库认证的FTP


发布日期:2019年11月05日
 
建立数据库认证的FTP

proftp+mysql认证实现

安装 redhat 或者solaris

solaris要求自己有c编译器等工具我们这里不提供安装方法具体可以取下载gcc包安装

停止缺省的 wuftpd服务器

在 ntsysv 里将 wuftpd 前的 * 去了然后保存然后将 /etc/rcd/initd 目录下的 wuftpd 的启动脚本删除了Solaris可以去/etc/services和/etc/nf注销不过最好是不要安装那个东西它的安全问题很多!

安装 MYSQL

在 Redhat 的光盘上有的将 MYSQL 的程序和库都装上(如果安装 Redhat 时已经 选装了这步就不用了当然如果是solaris的话就没什么用了用源代码包自己编译吧)

rpm ivh mysqlirpm

rpm ivh mysqldevelirpm

rpm ivh mysqlserverirpm

也可以源代码安装

tar –zxvf mysqltargz

cd mysql

/configure –prefix=/usr/local/mysql

make

make install

cd /usr/local/mysql/bin

/ mysql_install_db #初始化

/safe_mysqld –uroot & #启动mysql

下载 proftpdtargz

不知道哪儿有下载?FAINT在搜索引擎上用 proftpdtargz 下载 在找 至少命中个可以下载的站点

准备开始安装 proftpd

为 proftpd 建立专用的用户;加一个ftpuser组 id为;加一个ftpuser用户用户id为组id为

在MYSQL下为 proftpd 建数据库和表

#mysql p

PASSWORD:****** (自己的口令自己知道)

然后用下列命令直接拷进去吧

CREATE DATABASE proftpftp;

USE proftp;

CREATE TABLE users (

userid VARCHAR() NOT NULL # 用户名

uid INT UNSIGNED # 用户ID

gid INT UNSIGNED # 组ID

passwd VARCHAR() NOT NULL # 密码

shell VARCHAR() # SHELL

homedir VARCHAR() # 用户目录

count INT UNSIGNED NOT NULL # 登录计数

) comment = 用户表;

#这个地方可能没法输入汉字可改成英文!

CREATE TABLE groups (

groupname VARCHAR() NOT NULL # 组名

gid INT NOT NULL # 组ID

members VARCHAR() # 组成员

) comment = 组表;

#把组表改为英文吧

设置权限

在 MYSQL 下 GRANT 一个可以存取这个表的用户(要 select update 权限)

grant selectupdatedeleteinsert on proftp*

to yourmysqlid@% identified by passwd;

tar zxvf proftpdtargz

cd proftpd

/configure withmodules=mod_sql:mod_sql_mysql

withincludes=/usr/include

withlibraries=/usr/lib/mysql

(这里的 MYSQL 是用 RPM 安装时的库路径你可以在根下用 locate 命令找到自己机 器上 MYSQL 库的路径)

如果是源代码安装的一定要注意了

/configure prefix=/usr/local/proftpd

withmodules=mod_sql:mod_sql_mysql

withincludes=/usr/local/mysql/include

withlibraries=/usr/local/mysql/lib/mysql

这个地方也要多多注意我就是这里出了错误的

make 并 make install

编辑 /usr/local/etc/nf

加上下面的话(须修改一下再加)

#先改其它参数文件本来就有注解的然后加上下面的

#用户不能访问比自己登录目录更高级别的目录

DefaultRoot ~

#数据库情况刚刚的GRANT时要是用了IP这里要写 proftp@xxxxxxxxxxxx

#用机器名也一样只有GRANT时用localhost时可以省略@ xxxxxxxxxxxx

SQLConnectInfo proftp 用户名 口令

#密码方式为明文可以为空

#(要是想用 MD 也可以手册上讲了好多种加密支持)

SQLAuthTypes Plaintext Empty

#是否不允其它认证方式

#(注意其它文章里的这个参数是讲错的小乐就上当过

SQLAuthoritative on

#不用讲了吧

SQLDefaultGID

SQLDefaultUID

#用户认证

SQLDoAuth on

#组有效

SQLDoGroupAuth on

#下面的就不用讲了吧一眼就明白了 根据你数据表情况写

SQLUserTable users

SQLUsernameField userid

SQLUidField uid

SQLGidField gid

SQLPasswordField passwd

SQLShellField shell

SQLHomedirField homedir

SQLLoginCountField count

SQLGroupTable groups

SQLGroupGIDField gid

SQLGroupMembersField members

SQLGroupnameField groupname

SQLHomedirOnDemand on cp

/usr/local/mysql/lib/mysql/libmysqlclientso /usr/lib

(重要我是花了好久时间才弄明白的否则启动不了!!!)

测试

先在 MYSQL 里加用户组用户密码留空也可反正是测试 运行 /usr/local/proftpd/sbin/proftpd ftp localhost

用新加的用户一试哈哈是不是成了

题外话

要是想把 PROFTPD 放在 ntsysv 里边控制呵呵加下面的脚本吧

建立 /etc/rcd/initd/proftpd 内容是

#!/bin/sh

case $ in

start)

echo Starting professional ftp daemon: [OK]

/usr/local/proftpd/sbin/proftpd d

touch /var/lock/subsys/proftpd

;;

stop)

echo n Restarting professional ftp daemon: All Proftpd Process

rm f /var/lock/subsys/proftpd

killall proftpd

;;

*)

echo Usage: $ { start | stop }

;;

esac

exit

可以用 /etc/rcd/initd/proftpd stop 来杀所有 proftpd 守护进程用 /etc/rcd/initd/proftpd start 启动一个进程要是你不小心启运了两次就用一次 STOP 就可以了

               

上一篇:DataGuard数据库服务器硬盘故障处理

下一篇:vsftpd-1.1.3配制实例之四:VIRTUAL