Centos5.3+ProFTPD1.3.2+Mysql5.1配置FTP服務(wù)
Allen Jelver 2009-12-17
廢話少說(shuō)了,就是利用Mysql做FTP校驗(yàn),即通過(guò)數(shù)據(jù)庫(kù)管理FTP用戶信息,檢驗(yàn)登錄等......,進(jìn)入正題.>>
一、 安裝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/下載,本教程對(duì)Mysql的rpm方式安裝省略,需要注意的是devel包是必須安裝的,只有安裝devel包后才能生成/usr/include/mysql,32位機(jī)器安裝的lib路徑要注意一下是/usr/lib/mysql即可,關(guān)于msyql的安裝網(wǎng)上很多資料都可以參考。
二、 安裝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
|
首先需要聲明的是以下的配置會(huì)跟你的安裝目錄有關(guān),安裝成功后則會(huì)生成/usr/local/etc/目錄,其中包含核心配置文件proftpd.conf,同時(shí)在/usr/local/sbin下有proftpd可執(zhí)行文件,通常用來(lái)啟動(dòng)服務(wù)用的,其中pid文件文件是自啟動(dòng)腳本中創(chuàng)建的,這部分在后面會(huì)講到。對(duì)以上兩個(gè)目錄做查看,如下圖所示:
說(shuō)明:若在make或make install中有錯(cuò)則需要注意是否是gcc方面的問(wèn)題導(dǎo)致。
三、 配置Mysql認(rèn)證
認(rèn)證這部分主要是配置proftpd.conf文件,在修改配置文件之前最好養(yǎng)成先備份一個(gè)文件的習(xí)慣,否則修改出錯(cuò)后沒(méi)有辦法找到原來(lái)的版本。并在proftpd.conf中加入以下內(nèi)容,
1.修改組信息
# Set the user and group under which the server will run.
User nobody
Group nogroup
將Group對(duì)應(yīng)的nogroup修改為如下的nobody
# Set the user and group under which the server will run.
User nobody
Group nobody
|
2.加入數(shù)據(jù)校驗(yàn)配置
# 屏蔽服務(wù)器版本信息
ServerIdent off
# 數(shù)據(jù)庫(kù)連接的信息,ftpusers是數(shù)據(jù)庫(kù)名, localhost是主機(jī)名,3306是端口號(hào),root是連接數(shù)據(jù)庫(kù)的用戶名,123456是密碼。
SQLConnectInfo ftpusers@localhost:3306 root 123456
# 數(shù)據(jù)的認(rèn)證方式
# Backend表示用戶認(rèn)證方式為MySQL數(shù)據(jù)庫(kù)的認(rèn)證方式
# Plaintext表示明文認(rèn)證方式,排在最前面的為最先使用的方式
SQLAuthTypes Backend Plaintext
#指定用來(lái)做用戶認(rèn)證的表的有關(guān)信息。("users"和"grps"是數(shù)據(jù)表名字,其后為字段信息)
SQLUserInfo users userid passwd uid gid home shell
SQLGroupInfo grps grpname gid members
#設(shè)置如果shell為空時(shí)允許用戶登錄:
RequireValidShell off
#數(shù)據(jù)庫(kù)的鑒別
SQLAuthenticate users groups usersetfast groupsetfast
#如果home目錄不存在,則系統(tǒng)會(huì)為根據(jù)它的home項(xiàng)新建一個(gè)目錄:
#注意SQLHomedirOnDemand已經(jīng)在1.3.2以后的版本中改名為CreateHome
CreateHome on
#設(shè)置系統(tǒng)運(yùn)行日志和文件傳輸日志
SystemLog /var/log/proftpd.syslog
TransferLog /var/log/proftpd.transferlog
|
3.建立相應(yīng)的系統(tǒng)用戶
在本例中,只整個(gè)FTP服務(wù)只提供一個(gè)有效的系統(tǒng)用戶ftpuser和組ftpgrp,當(dāng)然你也可以設(shè)置多個(gè)系統(tǒng)用戶。但出于安全的考慮,我只設(shè)一個(gè),用他來(lái)啟動(dòng)FTP daemon,并把所有的FTP用戶映射過(guò)這個(gè)用戶。
先建立ftpgrp組:
groupadd -g 5500 -r ftpgrp //增加一個(gè)組ID為5500的ftpgrp組
建立ftpuser用戶:
useradd -u 5501 -g 5500 -d /home/ftp -s /bin/bash -r ftpuser
為ftpuser建立home,把所有的FTP user 活動(dòng)空間全放在此目錄下:
mkdir /home/ftp
chown ftpuser /home/ftp
chgrp ftpgrp /home/ftp
|
4.初始化數(shù)據(jù)庫(kù)
1)創(chuàng)建數(shù)據(jù)庫(kù)和表
create database ftpusers;
use ftpusers;
建立一個(gè)用戶表USERS,這個(gè)表是必須的:
create table USERS (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
); |
此表是為了用戶認(rèn)證所需要的,其中userid、passwd是必不可少的,userid是用做FTP服務(wù)的用戶名;passwd是指此用戶的密碼;uid是系統(tǒng)用戶的ID,也就是所映射的系統(tǒng)用戶;gid是所屬系統(tǒng)組的ID;home是該用戶所在的HOME目錄;shell可以為該用戶指定相應(yīng)的shell。當(dāng)然你可以建立更多的字段,例如:用來(lái)記錄用戶登錄次數(shù)的count,或者是日期的date,如果你對(duì)配置熟悉了之后,你可以根據(jù)自己的喜歡添加更多的功能。
另外,若需要對(duì)組成員管理之類的功能則需要添加GRPS表:
create table GRPS (
grpname TEXT NOT NULL,
gid SMALLINT NOT NULL,
members TEXT NOT NULL
);
|
其中g(shù)rpname是組的名稱,gid是系統(tǒng)組的ID,members是組的成員。注意:多成員,他們之間要用逗號(hào)隔開(kāi),不能使用空格。
2)增加用戶,在數(shù)據(jù)庫(kù)USERS表和GRPS表中插入數(shù)據(jù):
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; //刷新數(shù)據(jù)庫(kù) |
四、 配置自啟動(dòng)服務(wù)
從編譯安裝路徑中拷貝proftpd.init.d文件到/etc/rc.d/init.d/中,并重命名為proftpd,授予可執(zhí)行權(quán)限后,通過(guò)chkconfig --add命令將其加為自啟動(dòng)服務(wù)即可,具體操作如下:
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
#加入為服務(wù)
chkconfig --add proftpd
chkconfig --level 3 proftpd on
#這樣,就可以分別通過(guò)以下方式來(lái)完成啟動(dòng)、停止、重啟Proftpd的工作了
service profptd start
service proftpd stop
service proftpd restart
|
常用指令:
pgrep proftpd 注:查看服務(wù)器是不是啟動(dòng)起來(lái)了;如果沒(méi)有進(jìn)程,說(shuō)明失敗;
pkill proftpd 注:殺死proftpd的進(jìn)程;也就是關(guān)掉服務(wù)器;
查看proftpd日志:tail -f /var/log/proftpd.syslog
查看proftpd傳輸文件日志:tail -f /var/log/proftpd.transferlog
五、 配置磁盤限額
暫時(shí)未做,以后更新
后記:
很多資料都是來(lái)參考網(wǎng)絡(luò)上的資料整理的,配置環(huán)境測(cè)試通過(guò),所以本文章可以隨意轉(zhuǎn)載,不過(guò)最好也能夠標(biāo)注原帖出處:)
主要參考:
http://blog.ixpub.net/html/92/10996892-2512.html
http://hi.baidu.com/fei33352/blog/item/73acf881b0972bddbc3e1ed2.html