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