ProFTPD 支持MySQL数据库添加虚拟用户认证

这篇文章主要为实现我的一个主机管理项目使用的,我早期的打算是允许用户通过FTP客户端上传文件,然后在通过页面对文件下载进行管理。使用的系统是基于UBUNTU的系统。FTP服务器端当然优先考虑使用ProFTPD来完成。同时使用MYSQL数据库对文件进行管理。

一下是软件清单:

  • ubuntu系统
  • ProFTPD (早期的版本是不代数据库认证的,所以各位需要检查自己的软件版本)
  • MYSQL

我这里就忽略软件的安装,因为这些内容网上面有很详细的说明。请大家自己GG和百度!

第一步

# sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

完成后我们开始安装proftpd服务:

#apt-get install proftpd

安装没碰到什么问题,我们就准备进入第二步骤!(如果出现问题了自己分析原因吧,多半是APT的问题,和本文扯不上关系!)

第二步

我们为proftpd准备一个数据,用来存放用户信息!并且我们专门开辟一个访问这个库的用户(主要是为了安全考虑),在本文中我们假设用户名为 proftpd 密码为 123456。准备好了吗?OK 下面给出代码:

Grant select,insert,update,delete,create,drop,index,alter,create temporary tables,lock tables on proftpd.*  to proftpd@localhost Identified by "123456";

接下来就是使用SQL命令为数据库创建各种用户信息表,详细SQL代码如下(如果你想偷懒的话也可以吧本段代码复制到一个文本文件中进行导入cheeky):

-- 数据库: `proftpd`
--
-- --------------------------------------------------------
--
-- 表的结构 `ftpgroups`
-- 
CREATE TABLE `ftpgroups` (
  `groupname` varchar(30) NOT NULL default '',
  `gid` int(11) NOT NULL default '1000',
  `members` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- 表的结构 `ftpusers`
-- 

CREATE TABLE `ftpusers` (
  `userid` varchar(30) NOT NULL default '',
  `passwd` varchar(80) NOT NULL default '',
  `uid` int(10) unsigned NOT NULL default '1000',
  `gid` int(10) unsigned NOT NULL default '1000',
  `homedir` varchar(255) NOT NULL default '',
  `shell` varchar(255) NOT NULL default '/sbin/nologin',
  `count` int(10) unsigned NOT NULL default '0',
  `host` varchar(30) NOT NULL default '',
  `lastlogin` varchar(30) NOT NULL default '',
  UNIQUE KEY `userid` (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- 导出表中的数据 `ftpusers`
-- 

INSERT INTO `ftpusers` VALUES ('test', 'test', 1000, 1000, '/home/test', '/sbin/nologin',0,'','');

-- --------------------------------------------------------

--
-- 表的结构 `quotalimits`
-- 

CREATE TABLE `quotalimits` (
  `name` varchar(30) default NULL,
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `per_session` enum('false','true') NOT NULL default 'false',
  `limit_type` enum('soft','hard') NOT NULL default 'soft',
  `bytes_in_avail` float NOT NULL default '0',
  `bytes_out_avail` float NOT NULL default '0',
  `bytes_xfer_avail` float NOT NULL default '0',
  `files_in_avail` int(10) unsigned NOT NULL default '0',
  `files_out_avail` int(10) unsigned NOT NULL default '0',
  `files_xfer_avail` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- 表的结构 `quotatallies`
-- 

CREATE TABLE `quotatallies` (
  `name` varchar(30) NOT NULL default '',
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `bytes_in_used` float NOT NULL default '0',
  `bytes_out_used` float NOT NULL default '0',
  `bytes_xfer_used` float NOT NULL default '0',
  `files_in_used` int(10) unsigned NOT NULL default '0',
  `files_out_used` int(10) unsigned NOT NULL default '0',
  `files_xfer_used` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

以上就是认证配置的主要工作!

后面的详细配置我回在另一篇文章中进行说明!



发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

无觅相关文章插件,快速提升流量