天天看點

用proftp+mysql 架設 FTP伺服器

<b>Proftpd+Mysql</b><b>搭建</b><b>FTP </b><b>伺服器</b>

   在搭建FTP伺服器的時候,有時候我需要為每個使用者建立一個目錄,而使用者隻能在自己的目錄下進行操作,其他使用者的目錄不可見,同時還需要一個公共目錄。基于以上需求,我們可以先建立一個公共目錄,然後在此公共目錄下建立使用者子目錄。通過權限設定使使用者隻能通路自己的目錄和公共目錄。結合mysql 可以友善地實作使用者管理。

以下安裝說明。 橙色部分為安裝時,需要根據實際情況自行修改的地方。配置檔案中的下劃線部分為必選内容。

軟體包:Proftpd和mysql。  

<b>一、 </b><b>Proftpd</b><b>安裝和配置</b>

1、 使用wget指令擷取安裝程式。

#wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2c.tar.gz

2、 解壓安裝包。

#tar xzvf proftpd-1.3.2c.tar.gz

3、配置安裝路徑。

#cd proftpd-1.3.2c   

#./configure --prefix=/usr/local/proftpd 

--with-modules=mod_sql:mod_sql_mysql

--with-includes=/data/mysql/include/mysql

--with-libraries=/data/mysql/lib/mysql/ 

(--prefix:是要安裝到的目錄;--with-modules: 讓編譯ProFTPD 支援MySQL的子產品,--with-includes: 指定MySQL伺服器includes所在的位置,mysql的include檔案通常是.h結尾,--with-libraries:指定MySQL伺服器libraries所在的位置,mysql的庫檔案通常是*結尾,)

3、 編譯,安裝。

#make

#make  install

4、 編輯proftpd配置檔案。

#vi /usr/local/proftp/ect/proftpd.conf

<b></b>

<b>二、 </b><b>建立FTP使用者資料庫。</b>

<b>    本文重在講proftpd.....mysql 安裝步驟省略。</b>

1、在資料庫中 建立一個ProFTPD的資料庫管理賬戶。

#mysql -uroot –p           //用Root登入MySQL

&gt;create database ftpdb    //建ftpdb 資料庫

      &gt;grant select, update on ftpdb.* to proftpd@"%" identified by 'password'

//新增一個使用者,用于存取ftpdb 資料庫,使用者名 proftpd,密碼 password

2、在ftpdb資料庫中,建立FTP使用者組資訊表。

&gt;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)

);

//插入一條記錄

INSERT INTO ftpgroup VALUES ('ftpgroup', 5500, 'ftpuser');

#ftpuser的表結構

表的結構 `ftpusers`

Create TABLE ftpusers (

userid varchar(30) NOT NULL default '',

passwd varchar(80) NOT NULL default '',

uid int(10) unsigned NOT NULL default '1000',

gid int(10) unsigned NOT NULL default '1000',

homedir varchar(255) NOT NULL default '',

shell varchar(255) NOT NULL default '/sbin/nologin',

count int(10) unsigned NOT NULL default '0',

host varchar(30) NOT NULL default '',

lastlogin varchar(30) NOT NULL default '',

UNIQUE KEY userid (userid)

) ENGINE=MyISAM DEFAULT CHARSET=gbk;  

  

#插入一條記錄(為保證檔案隻對自己私有目錄具有通路權限,每個使用者ID值應不同)

INSERT INTO ftpuser VALUES('ftpuser', 'password', 5501, 5500, '/home/FTP/test ','/sbin/nologin',’’,’’,’’);

其中/home/FTP為公共目錄需要手動建立,/home/FTP/test 是指定為使用者ftpuser建立的目錄。該目錄無需手動建立,結合proftp配置檔案,若該目錄不存在,在使用者首次登入時會自動建立。

3、添加FTP伺服器系統使用者組及使用者

#groupadd FTPGRP -g 1000

#useradd  FTPUSR -u 1000 -g FTPGRP -s /sbin/nologin

 

4、建立FTP公共目錄即根目錄

#mkdir /home/FTP

使用者私有目錄無需建立,在配置檔案中自行建立。

<b>三、 </b><b>修改proftpd配置檔案。</b>

#配置伺服器名稱

ServerName           "ProFTPD Default Installation"

#配置伺服器啟動方式

ServerType            standalone

#隐藏伺服器版本資訊

ServerIdent           off

#預設服務

DefaultServer           on

#設定FTP伺服器端口

Port                 21

#設定是否支援IPv6

UseIPv6              off

#Umask指定FTP server程序的Umask值,022與Linux系統得預設值一緻。

Umask                022

# 設定同時登入使用ftp的Ip數目;

MaxInstances         30

# 設定最大的嘗試登陸的次數,如果超過自動斷開連接配接

MaxLoginAttempts                 3

# 限制每個帳戶在每個用戶端最多可以同時登陸次數

MaxClientsPerUser                5

# 限制每個用戶端主機最多的連接配接數

MaxClientsPerHost                2

# 設定每秒接受的連結請求個數,防止DoS攻擊

MaxConnectionRate                4

# 設定用戶端連接配接數量

MaxClients                       60

# 設定上傳檔案最大值

MaxStoreFileSize               2 Gb

# 關閉反向查詢client的使用者名的操作(RFC1413),加快連接配接速度

IdentLookups                    off

# 關閉DNS的反向查詢(同樣為了加快響應速度)

UseReverseDNS                   off

# 自動删除未傳完(aborted)的上傳檔案

DeleteAbortedStores              on

# 不顯示真實的檔案所有者資訊

DirFakeUser                      on

# 不顯示真實的檔案的組資訊

DirFakeGroup                     on

# 不顯示真實的檔案的讀寫操作資訊

DirFakeMode                    0600

# 認證帳号不需要有有效的shell

RequireValidShell               off

#配置MySql認證

&lt;Global&gt;

#設定驗證

SQLConnectInfo proftpd@localhost proftpd password

SQLAuthTypes Plaintext

SQLUserInfo ftpusers userid passwd uid gid homedir shell

SQLGroupInfo ftpgroup groupname gid members

SQLAuthenticate users groups

SQLNegativeCache on

#如果使用者目錄不存在則自動建立

CreateHome on

SQLNamedQuery getcount SELECT "count from ftpusers where userid='%u'"

SQLNamedQuery getlastlogin SELECT "lastlogin from ftpusers where userid='%u'"

SQLNamedQuery updatelogininfo UPDATE "count=count+1, host='%h', lastlogin=current_timestamp() WHERE userid='%u'" ftpusers

SQLShowInfo PASS "230" "You've logged on %{getcount} times,last login at %{getlastlogin}"

SQLLog PASS updatelogininfo

DeferWelcome on

RootLogin off

RequireValidShell off

&lt;/Global&gt;

#設定使用者群組

User                   FTPUSR

Group                  FTPGRP        

#将使用者活動範圍限定在指定目錄

DefaultRoot /home/FTP

# 設定允許斷點續傳和覆寫檔案

AllowOverWrite          on

AllowStoreRestart       on

AllowRetrieveRestart    on

# 讓proftp支援現在流行的FXP傳輸方式,預設是不支援的

AllowForeignAddress on

#設定FTP伺服器系統日志存放目錄

Systemlog /var/log/ftp.syslog

#設定FTP伺服器傳輸日志存放目錄

TransferLog /var/log/ftp.transferlog

#限制傳輸速率

TransferRate RETR,STOR 50

#設定使用者删除權限

&lt;Limit DELE&gt;

  AllowUser ftpuser

&lt;/Limit&gt;

# 設定目錄的使用權限

&lt;Directory /home/FTP&gt;

        # 隐藏沒有通路權限的檔案

        HideNoAccess                on

        # 限制此目錄的寫權限僅為管理者帳号,根據情況限制權限。

        &lt;Limit WRITE&gt;

           Order            deny,allow

           AllowUser        ftpuser       

        &lt;/Limit&gt;

&lt;/Directory&gt;

<b>四、 </b><b>測試</b>

開啟Prfotpd伺服器

/etc/init.d/proftpd start(需要先加入服務)

本文内容均來自網際網路,經搜集整理而成,如有侵犯到你的權益,請及時通知我。做相關處理。