天天看點

虛拟賬号之pureftp

配置構想圖:

<a href="http://blog.51cto.com/attachment/201212/221707407.jpg" target="_blank"></a>

要求:

1、ftp-clients通路pure-ftp資料庫時,使用者資訊存放在ftpusers的資料庫中;

2、通過pureamin來管理pureftp在ftpusers資料庫中的使用者。

配置環境準備:

 1、安裝組包:開發工具、開發庫、老的軟體開發 (Development Tools

Development Libraries、Legacy Software Development)

     yum groupinstall “開發工具” -y

2、因實驗環境是基于apache,php,mysql的,需要安裝

  yum install httpd php mysql mysql-server mysql-devel php-mysql  -y

ZendOptimizer-3.3.3-linux-hicode.tar.gz(提高php應用程式執行速度)

一、pure-ftp配置

1、pure-ftpd的服務項的設定  

#tar -zxvf  pure-ftpd-1.0.36.tar.gz  -C /usr/local/src/   (解壓并指定目錄)

# cd pure-ftpd-1.0.36     (切換到解壓目錄)

#./configure \

     --prefix=/usr/local/pureftpd \   #路徑,預設在/usr/local/

     --with-mysql \             #用MySQL管理使用者資料

     --with-shadow \          #忽略shadow密碼,除非你使用PAM, LDAP 或者 SQL

     --with-pam  \             #認證子產品

   --with-welcomemsg   \   #像其它一樣FTP servers讀取’welcome.msg’檔案。但是Pure-ftpd預設是使用’.banner’檔案。

    --with-uploadscript  \     #成功上傳後可自動自動調用擴充程式。這需要安裝’pure-uploadscript’。

    --with-cookie   \          #當使用者登入時顯示自定義的标題資訊

   --with-virtualchroot \    #通常使用者不能離開家目錄,啟用這項,再配合symbolic links,就變成可能了   

   --with-virtualhosts \    #支援虛拟主機。就是可為每個IP位址設不同的匿名登入區域。如果隻有一個IP就用不着這項。

   --with-diraliases \       #支援目錄别名

   --with-quotas \           #啟用虛拟配額

   --with-puredb \          #本地使用者資料存儲,支援虛拟使用者

   --with-sysquotas \       #支援系統配額

   --with-ratios \          #支援上傳/下載下傳比率限制

   --with-ftpwho \          #支援’pure-ftpwho’指令,建議在standalone模式使用,inet較慢

   --with-throttling \      #支援帶寬限制

   --with-language=simplified-chines  \     #輸出資訊為簡體中文

   --with-altlog       #支援将日志輸出成特定格式,以便用于分析

#make

#make install   

#cp contrib/redhat.init /etc/init.d/pureftpd

#vim /etc/init.d/pureftpd (改變以下三行)

 17 prog=pure-config.pl

 18 fullpath=/usr/local/pureftpd/sbin/$prog            (正确關聯pureftpd服務的控制腳本)

 19 pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho

 24     $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize  (pureftpd的主配置檔案)

#chmod 755 /etc/init.d/pureftpd   (修改權限,使pureftpd為可執行的服務腳本)

#chkconfig --add pureftpd     (使pureftpd被chkconfig管理,并加入開機啟動)

#chkconfig pureftpd on

2、pure-ftp的主配置檔案修改 

 #mkdir -pv /usr/local/pureftpd/etc/

 #cp   /usr/local/src/pure-ftpd-1.0.36/   \

configuration-file/pure-ftpd.conf   /usr/local/pureftpd/etc/ 

 # vi /usr/local/pureftpd/etc/pure-ftpd.conf

       其中有幾項要修改:

        chrootEveryone              yes   限定在自己的家目錄

        NoAnonymous               yes   不允許匿名登入

        Bind                    127.0.0.1,21 監聽本機回環 &lt;可選&gt;

        CreateHomeDir             yes    允許使用者登入後自動建立家目錄   &lt;必須&gt;

二、配置虛拟使用者登入環境

 # useradd virtualftp -d /ftproot -s /sbin/nologin  &lt;建立接下來的虛拟使用者 對應的系統使用者&gt;

 # chmod -R 777  /ftproot  &lt;這項不做可能會引起登入時報421錯誤&gt;

---修改環境變量

# echo PATH=$PATH:/usr/local/pureftpd/bin/ &gt;&gt;/etc/profile

#. /etc/profile      (重新加載環境變量)

三、用mysql認證

1、拷貝解壓到/usr/local/src下pure-ftpd-1.0.36目錄裡的pureftp與mysql關聯檔案

#cp /usr/local/src/pure-ftpd-1.0.36/pureftpd-mysql.conf    /usr/local/pureftpd/etc/ 

2、修改pureftp與mysql的關聯檔案,

# vim  /usr/local/pureftpd/etc/pureftpd-mysql.conf  &lt;修改如下:&gt;

MYSQLUser      ftp

MYSQLPassword   abc

MYSQLDatabase   ftpusers

MYSQLCrypt      MD5 

101 MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE User='\L'

106 MySQLGetRatioUL SELECT ULRatio FROM users WHERE User='\L'

107 MySQLGetRatioDL SELECT DLRatio FROM users WHERE User='\L'

114 MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User='\L'

115 MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User='\L'

:wq

開啟以上幾行,使pureftp-server支援磁盤配額、比率、帶寬

3、配置pureftp的主配置檔案,指明關聯mysql檔案的存放位置

#vi /usr/local/pureftpd/etc/pure-ftpd.conf

116 MySQLConfigFile       /usr/local/pureftpd/etc/pureftpd-mysql.conf

四、配置資料庫(采取導入的方式)

# mysqladmin -u root password "123"  (為本地資料庫建立密碼)

下載下傳後,編輯vim pureftp.sql 檔案,可以自行修改賬号密碼等參數,本文保持預設,一定要如下修改第15行:

15   前2個減号空一格--  ----

mysql -u root -p &lt; pureftp.sql 

Enter password: 

<a href="http://blog.51cto.com/attachment/201212/221720629.jpg" target="_blank"></a>

導入成功後,用root登入mysql,執行對ftpusers使用者的授權

mysql&gt;grant all privileges on ftpusers.* to ftp@localhost identified by 'abc';

mysql&gt;flush privileges;

mysql&gt;quit;

五、pureadmin配置

1、下載下傳PureAdmin-0.3.tar.gz,

2、配置web程式

# tar xvf PureAdmin-0.3.tar.gz -C /var/www/html/

# cd /var/www/html/

# mv PureAdmin-0.3/   pureadmin   (重命名)

#vim /var/www/html/pureadmin/config.php   (編輯配置檔案)

&lt;?php

$cfg['dbhost']='localhost'; //mysql host

$cfg['dbname']='ftpusers';  //mysql db name

$cfg['dbuser']='ftp';           //mysql user

$cfg['dbpasswd']='abc';           //mysql password

$cfg['passwdtype']='MD5';

$cfg['dir']='/ftproot'; //dir

 ..........

?&gt;    (其餘的保持預設值就可以了,也可自定義設定)

六、安裝ZendOptimizer(php加速器)

#tar -zxvf ZendOptimizer-3.3.3-linux-hicode.tar.gz  -C /usr/local/src

#cd /usr/local/src/ZendOptimizer-3.3.3-linux-glibc23-i386/

#./install.sh (根據提示操作)

安裝很簡單,不再附圖。

七、測試

現在可以登入使用了

http://192.168.2.1/pureadmin

檢視導入的資料庫檔案

#vim  pureftp.sql   可知admin 的密碼為passwd

<a href="http://blog.51cto.com/attachment/201212/221748516.jpg" target="_blank"></a>

登入:使用者admin ; 密碼passwd ;驗證碼不用

<a href="http://blog.51cto.com/attachment/201212/221802419.jpg" target="_blank"></a>

登入後添加新使用者:test1,test2

<a href="http://blog.51cto.com/attachment/201212/221813127.jpg" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201212/221824450.jpg" target="_blank"></a>

使用者未登入前,檢視基目錄下/ftproot為空:

<a href="http://blog.51cto.com/attachment/201212/221836758.jpg" target="_blank"></a>

以test2從用戶端登入ftp伺服器,

<a href="http://blog.51cto.com/attachment/201212/221902292.jpg" target="_blank"></a>

自動建立虛拟使用者的家目錄,

<a href="http://blog.51cto.com/attachment/201212/221952667.jpg" target="_blank"></a>

#vim /usr/local/pureftpd/etc/pure-ftpd.conf   (編輯開啟日志)

304 AltLog                     clf:/var/log/pureftpd.log

311 AltLog                     stats:/var/log/pureftpd.log

318 AltLog                     w3c:/var/log/pureftpd.log

檢視日志檔案(可以與綜合日志/var/log/messages結合檢視)

<a href="http://blog.51cto.com/attachment/201212/222624376.jpg" target="_blank"></a>

可以看出,日志記錄的時間與系統時間并不對照,因為pureftp預設使用的是GMT時區

#vim /usr/local/pureftpd/etc/pure-ftpd.conf

加上TimesGMT off

重新開機pureftpd服務,後再看看。

結束了。。

注:限制ip段

#vim /usr/local/etc/pureftpd-mysql.conf 

修改 “MYSQLGetPW SELECT Password FROM users WHERE User="\L"  ”,将其改為“MYSQLGetPW SELECT Password FROM users WHERE User="\L" and (ipaccess='*' or ipaccess=SUBSTRING_INDEX("\R",".",3))”這裡是限制C類位址登陸,限制單個ip可直接将ipaccess字段設為限制登陸的ip位址。以此類推,可以設定為限制A、B類位址或指定ip位址範圍。

本文轉自 劉園  51CTO部落格,原文連結:http://blog.51cto.com/colynn/1093539