LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 6272|回复: 10

ProFTPD+MySQL 认证

[复制链接]
发表于 2004-1-5 23:14:11 | 显示全部楼层 |阅读模式

使用MySQL认证ProFTPD用户:

1. apt-get update    //更新数据库

2. apt-get mysql-client mysql-server //安装MySQL

3. apt-get proftpd-mysql //安装支持MySQL的ProFTPD

4. mysql -uroot -p //用Root登录MySQL,

create database ftpdb //建ftpdb 数据库

grant select, update on ftpdb.* to proftpd@"%" identified by 'password'  //新增一个用户,用于存取ftpdb 数据库,用户名 proftpd,密码 password

use ftpdb  //对 ftpdb 库操作

#ftpgroup的表结构
CREATE TABLE `ftpgroup` (
  `groupname` varchar(16) NOT NULL default '',
  `gid` smallint(6) NOT NULL default '5500',
  `members` varchar(16) NOT NULL default '',
  KEY `groupname` (`groupname`)
) TYPE=MyISAM;

#插入一条记录
INSERT INTO `ftpgroup` VALUES ('ftpgroup', 5500, 'ftpuser');

#ftpuser的表结构
CREATE TABLE `ftpuser` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `userid` varchar(32) NOT NULL default '',
  `passwd` varchar(32) NOT NULL default '',
  `uid` smallint(6) NOT NULL default '5500',
  `gid` smallint(6) NOT NULL default '5500',
  `homedir` varchar(255) NOT NULL default '',
  `shell` varchar(16) NOT NULL default '/sbin/nologin',
  `count` int(11) NOT NULL default '0',
  `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;

#插入一条记录
INSERT INTO ftpuser (userid, passwd, uid, gid, homedir, shell) VALUES
('ftpuser', 'ftppasswd', 5501, 5500, '/tony','/sbin/nologin');  //目录/tony应该存在

5.修改/etc/proftpd.conf
加入以下内容:
########################################
DefaultRoot ~
SQLAuthTypes            Plaintext Crypt
SQLAuthenticate         users* groups*
SQLConnectInfo  ftpdb@localhost proftpd password
SQLUserInfo     ftpuser userid passwd uid gid homedir shell
SQLGroupInfo    ftpgroup groupname gid members
SQLMinID        500
SQLHomedirOnDemand on
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog  STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
DeferWelcome                        on
RootLogin off
RequireValidShell off
########################################

6. /etc/init.d/proftpd stop
/etc/init.d/proftpd start    //使用/etc/init.d/proftpd restart  似乎不能达到预期的效果

7.使用
用户名:ftpuser   
密码:ftppasswd
测试
发表于 2004-3-10 22:11:26 | 显示全部楼层
太好了,,要的正是这个

太谢谢这位tony兄了
发表于 2004-5-10 14:48:05 | 显示全部楼层

有一个问题,匿名认证。

匿名论证老是不能上传,不知该如何设?
发表于 2004-5-10 18:19:43 | 显示全部楼层
#插入一条记录
INSERT INTO ftpuser (userid, passwd, uid, gid, homedir, shell) VALUES
('ftpuser', 'ftppasswd', 5501, 5500, '/tony','/sbin/nologin'); //目录/tony应该存在

执行完这一步后,是不是应该保存数据库并退出mysql吗?
由于从来没用过myql, 而且对数据库也知之甚少, 所以
请问执行完这步后,该怎么做?

有用phpmyadmin操作了一遍,也没成功,主要是在创建两个数据表时的
KEY `groupname` (`groupname`) 和  PRIMARY KEY (`id`) 不知如何
在phpmyadimin中指定?

让大家见笑了!
发表于 2004-5-10 19:24:54 | 显示全部楼层

回复: 有一个问题,匿名认证。

最初由 ljcai123 发表
匿名论证老是不能上传,不知该如何设?


proftpd.conf的结构类似于apache的httpd.conf,匿名的话找到<Anonymous ~ftp> </Anonymous>嵌套,在其中加入如下嵌套:

    <Directory incoming>              #定义上传目录名
      Umask                             022  022
        <Limit DELE>
        DenyAll                            #禁止删除文件
        </Limit>
        <Limit READ WRITE>
        AllowAll                           #允许读、写
        </Limit>
        <Limit STOR>
        AllowAll
        </Limit>
    </Directory>
发表于 2004-5-24 14:26:03 | 显示全部楼层
多谢高人回答,又有一问题,设用户主目录为中文,登陆时显示是乱码,mysql编译时已选--default-charset=gb2312选项,但将my.cnf中language项改为gb2312后,重启mysql出错,日志中提示“040524 14:17:41  mysqld started

/usr/sbin/mysqld: Fatal error: Can't find messagefile '/usr/share/mysql/gb2312/errmsg.sys'

040524 14:17:41  mysqld ended

如language项以english运行,则显示乱码,请问应如何解决?
多谢!
发表于 2005-4-20 15:46:56 | 显示全部楼层
mysql> grant select update on ftpdb.* to proftpd@"%" identified by 'password'
    -> use ftpdb
    -> CREATE TABLE `ftpgroup` (
    -> `groupname` varchar(16) NOT NULL default '',
    -> `gid` smallint(6) NOT NULL default '5500',
    -> `members` varchar(16) NOT NULL default '',
    -> KEY `groupname` (`groupname`)
    -> ) TYPE=MyISAM;
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'update on ftpdb.* to proftpd@"%" identified by 'password'
use


这是怎么回事呀?
回复 支持 反对

使用道具 举报

发表于 2005-4-30 11:11:23 | 显示全部楼层
我连不上呀

nmap 看到开了21端口
但是ftp127.0.0.1 也连不上  ,proftpd进程看到了。   telnet 127.0.0.1 21 也没有任何信息。

救命呀。
回复 支持 反对

使用道具 举报

发表于 2005-4-30 13:28:29 | 显示全部楼层
兄台,你这是什么命令?
1. apt-get update //更新数据库
2. apt-get mysql-client mysql-server //安装MySQL
3. apt-get proftpd-mysql //安装支持MySQL的ProFTPD

修改下吧。。
回复 支持 反对

使用道具 举报

发表于 2005-4-30 14:57:26 | 显示全部楼层
哦,忘了,这是我复制的,   少了 install

但是哥哥没有帮我解决哦   这是我第二次装,第二次碰到这样的情况。  不知道是什么问题。本机都不行。奇怪。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表