Centos5.3+ProFTPD1.3.2+Mysql5.1配置FTP服务
Allen Jelver 2009-12-17
废话少说了,就是利用Mysql做FTP校验,即通过数据库管理FTP用户信息,检验登录等......,进入正题.>>
一、 安装Mysql软件包(64位):
MySQL-server-community-5.1.38-0.rhel5.x86_64.rpm
MySQL-shared-community-5.1.38-0.rhel5.x86_64.rpm
MySQL-client-community-5.1.38-0.rhel5.x86_64.rpm
MySQL-devel-community-5.1.38-0.rhel5.x86_64.rpm
|
资源包可以在http://ftp.up.ac.za/pub/windows/MySQL/Downloads/MySQL-5.1/下载,本教程对Mysql的rpm方式安装省略,需要注意的是devel包是必须安装的,只有安装devel包后才能生成/usr/include/mysql,32位机器安装的lib路径要注意一下是/usr/lib/mysql即可,关于msyql的安装网上很多资料都可以参考。
二、 安装proftpd包
下载proftpd-1.3.2.tar.gz
wget http://ftp.ntu.edu.tw/proftpd/distrib/source/proftpd-1.3.2.tar.gz
cd /usr/local #这是我放置proftpd-1.3.2.tar.gz的目录
tar zxvf proftpd-1.3.2.tar.gz
cd proftpd-1.3.2
./configure --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql --with-includes=/usr/include/mysql --with-libraries=/usr/lib64/mysql
make
make install
|
首先需要声明的是以下的配置会跟你的安装目录有关,安装成功后则会生成/usr/local/etc/目录,其中包含核心配置文件proftpd.conf,同时在/usr/local/sbin下有proftpd可执行文件,通常用来启动服务用的,其中pid文件文件是自启动脚本中创建的,这部分在后面会讲到。对以上两个目录做查看,如下图所示:
说明:若在make或make install中有错则需要注意是否是gcc方面的问题导致。
三、 配置Mysql认证
认证这部分主要是配置proftpd.conf文件,在修改配置文件之前最好养成先备份一个文件的习惯,否则修改出错后没有办法找到原来的版本。并在proftpd.conf中加入以下内容,
1.修改组信息
# Set the user and group under which the server will run.
User nobody
Group nogroup
将Group对应的nogroup修改为如下的nobody
# Set the user and group under which the server will run.
User nobody
Group nobody
|
2.加入数据校验配置
# 屏蔽服务器版本信息
ServerIdent off
# 数据库连接的信息,ftpusers是数据库名, localhost是主机名,3306是端口号,root是连接数据库的用户名,123456是密码。
SQLConnectInfo ftpusers@localhost:3306 root 123456
# 数据的认证方式
# Backend表示用户认证方式为MySQL数据库的认证方式
# Plaintext表示明文认证方式,排在最前面的为最先使用的方式
SQLAuthTypes Backend Plaintext
#指定用来做用户认证的表的有关信息。("users"和"grps"是数据表名字,其后为字段信息)
SQLUserInfo users userid passwd uid gid home shell
SQLGroupInfo grps grpname gid members
#设置如果shell为空时允许用户登录:
RequireValidShell off
#数据库的鉴别
SQLAuthenticate users groups usersetfast groupsetfast
#如果home目录不存在,则系统会为根据它的home项新建一个目录:
#注意SQLHomedirOnDemand已经在1.3.2以后的版本中改名为CreateHome
CreateHome on
#设置系统运行日志和文件传输日志
SystemLog /var/log/proftpd.syslog
TransferLog /var/log/proftpd.transferlog
|
3.建立相应的系统用户
在本例中,只整个FTP服务只提供一个有效的系统用户ftpuser和组ftpgrp,当然你也可以设置多个系统用户。但出于安全的考虑,我只设一个,用他来启动FTP daemon,并把所有的FTP用户映射过这个用户。
先建立ftpgrp组:
groupadd -g 5500 -r ftpgrp //增加一个组ID为5500的ftpgrp组
建立ftpuser用户:
useradd -u 5501 -g 5500 -d /home/ftp -s /bin/bash -r ftpuser
为ftpuser建立home,把所有的FTP user 活动空间全放在此目录下:
mkdir /home/ftp
chown ftpuser /home/ftp
chgrp ftpgrp /home/ftp
|
4.初始化数据库
1)创建数据库和表
create database ftpusers;
use ftpusers;
建立一个用户表USERS,这个表是必须的:
create table USERS (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
); |
此表是为了用户认证所需要的,其中userid、passwd是必不可少的,userid是用做FTP服务的用户名;passwd是指此用户的密码;uid是系统用户的ID,也就是所映射的系统用户;gid是所属系统组的ID;home是该用户所在的HOME目录;shell可以为该用户指定相应的shell。当然你可以建立更多的字段,例如:用来记录用户登录次数的count,或者是日期的date,如果你对配置熟悉了之后,你可以根据自己的喜欢添加更多的功能。
另外,若需要对组成员管理之类的功能则需要添加GRPS表:
create table GRPS (
grpname TEXT NOT NULL,
gid SMALLINT NOT NULL,
members TEXT NOT NULL
);
|
其中grpname是组的名称,gid是系统组的ID,members是组的成员。注意:多成员,他们之间要用逗号隔开,不能使用空格。
2)增加用户,在数据库USERS表和GRPS表中插入数据:
INSERT INTO USERS (userid, passwd, uid, gid, home, shell) values ('allen', '123456', '5501', '5500', '/home/ftp/allen', "/usr/local/test.sh");
INSERT INTO USERS (userid, passwd, uid, gid, home, shell) values ('kitty', '222222', '5502', '5500', '/home/ftp/kitty', "/usr/local/test2.sh");
INSERT INTO GRPS (grpname,gid,members) values ('ftpgrp','5500','allen,kitty');
flush privileges; //刷新数据库 |
四、 配置自启动服务
从编译安装路径中拷贝proftpd.init.d文件到/etc/rc.d/init.d/中,并重命名为proftpd,授予可执行权限后,通过chkconfig --add命令将其加为自启动服务即可,具体操作如下:
cp /usr/local/proftpd-1.3.2/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/
cd /etc/rc.d/init.d
mv proftpd.init.d proftpd
chmod +x proftpd
#加入为服务
chkconfig --add proftpd
chkconfig --level 3 proftpd on
#这样,就可以分别通过以下方式来完成启动、停止、重启Proftpd的工作了
service profptd start
service proftpd stop
service proftpd restart
|
常用指令:
pgrep proftpd 注:查看服务器是不是启动起来了;如果没有进程,说明失败;
pkill proftpd 注:杀死proftpd的进程;也就是关掉服务器;
查看proftpd日志:tail -f /var/log/proftpd.syslog
查看proftpd传输文件日志:tail -f /var/log/proftpd.transferlog
五、 配置磁盘限额
暂时未做,以后更新
后记:
很多资料都是来参考网络上的资料整理的,配置环境测试通过,所以本文章可以随意转载,不过最好也能够标注原帖出处:)
主要参考:
http://blog.ixpub.net/html/92/10996892-2512.html
http://hi.baidu.com/fei33352/blog/item/73acf881b0972bddbc3e1ed2.html