Dict.CN 在线词典, 英语学习, 在线翻译

都市淘沙者

荔枝FM Everyone can be host

统计

留言簿(23)

积分与排名

优秀学习网站

友情连接

阅读排行榜

评论排行榜

【原创】Centos5.3+ProFTPD1.3.2+Mysql5.1配置FTP服务

   

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文件文件是自启动脚本中创建的,这部分在后面会讲到。对以上两个目录做查看,如下图所示:

说明:若在makemake 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    //增加一个组ID5500ftpgrp

建立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

posted on 2009-12-17 16:37 都市淘沙者 阅读(912) 评论(0)  编辑  收藏 所属分类: lighttpd/nginx/HA/LVS/FTP


只有注册用户登录后才能发表评论。


网站导航: