程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL驗證的Quota磁盤限額安裝手記

MySQL驗證的Quota磁盤限額安裝手記

編輯:關於MYSQL數據庫

最近嘗試了在FreeBSD上配置了一個基於Proftpd的FTP服務器,要求使用MySQL數據庫存放FTP用戶信息,並在數據庫內存放用戶Quota磁盤限額信息,同時還支持anonymous匿名用戶登陸。

之前網上搜索到一些文章,好像都出自同一個朋友的手,到處都是轉載或者稍微的修改。下面是Michael根據大家的經驗和proFTPd的MAN文檔進行的實際安裝手記。

本次Michael的FTP服務器使用的是FreeBSD 4.10 Release版本,Michael決定使用FreeBSD非常優秀的Ports系統進行所有軟件的安裝。以下的所有操作均是在Root用戶或者sudo root的情況下完成。

一、安裝MySQL

#cd /usr/ports/databases/MySQL41-server

#make install

系統會自動下載mysql的安裝包MySQL-4.1.14.tar.gz,並完成編譯和安裝過程。

注1:對於mysql的安裝,需要說明幾點要注意的地方,FreeBSD的Ports自動完成MySQL安裝後,還需要自己完成下面幾件事情後才能正常使用。

1、創建mysql用戶和MySQL用戶組,並修改目錄權限。

#pw groupadd MySQL -g 88

#pw adduser MySQL -u 88 -g 88 -d /nonexistent -s /sbin/nologin

#chown -R mysql:mysql /var/db/MySQL

#chown -R mysql:mysql /usr/local/share/MySQL

2、創建MySQL系統數據庫

#/usr/local/bin/MySQL_install_db

#/usr/lcoal/bin/MySQL_create_system_tables

3、創建MySQL自啟動腳本

#cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/MySQL-server.sh

4、創建MySQL配置文件 my.cnf

#cp /usr/local/share/MySQL/my-medium.cnf /etc/my.cnf (有my-medium、small、large、huge等可選)

現在,你可以通過 /usr/local/etc/rc.d/mysql-server.sh start 或者重啟系統來啟動MySQL了。

二、安裝proFTPd

和MySQL的安裝很相似,使用ports安裝:

#cd /usr/ports/ftp/proFTPd-MySQL

#make install

安裝的時候會要求選擇proFTPd要安裝的模塊,選擇好MySQL和quota,其他的根據情況選擇然後系統自動下載proFTPd-1.3.0rc2.tar.bz2並完成編譯和安裝。










三、配置proFTPd.conf

完成上面的安裝,proFTPd其實已經可以運行了,但是我們還需要根據自己的安裝要求進行必要的配置,所以先備份默認的配置文件。

#cp /usr/local/etc/proftpd.conf /usr/local/etc/proFTPd.conf.sample

1、重新編寫proFTPd.conf,下面是Michael的文件,大家完全照抄就基本可以了。

#基本配置
ServerName "Michael's Ftp Site" 
ServerType standalone 
DefaultServer on 
 
#設置用戶登陸時不顯示FTP服務器版本信息 
ServerIdent off 
 
#設置ftp服務使用的端口,可以修改
Port 21 
 
#設置ftp目錄的權限
Umask 022 
 
#設置系統各種超時時間和重試次數
MaxLoginAttempts 3 
TimeoutLogin 120 
TimeoutIdle 600 
TimeoutNoTransfer 900 
TimeoutStalled 3600 
 
#允許最大的同時連接用戶數
MaxClients 10
 
#允許每個用戶主機最大並發連接數 
MaxClIEntsPerHost 3 
 
AllowOverwrite no 
AllowStoreRestart on 
UseReverseDNS off 
 
#如果shell為空時允許用戶登錄 
RequireValidShell off 
 
#將用戶限制在自己的主目錄下 ,這個設置很重要
DefaultRoot '
 
#設置系統最大的進程數,防止DOS攻擊,默認是30
MaxInstances 10 
 
#設置系統用於運行proftpd服務的用戶和用戶組(需要後面自己創建) 
User FTPUSR 
Group FTPGRP 
 
#設置對全局的文件可以進行改寫
 
    AllowOverwrite on 
 
 
#設置系統運行日志和文件傳輸日志
SystemLog                       /var/log/proftpd.syslog  
TransferLog                     /var/log/proftpd.transferlog 
 
 
######################## 下面是匿名登陸部分的設置 #################
#匿名用戶登陸後訪問的目錄為 FTP用戶的主目錄

至此,完成了proFTPd.conf配置文件的編寫。

注2:之前Michael按照網上的部分文檔編寫了最後部分的MySQL調用語句,結果最後運行proFTPd後,登陸時總是出現421 Service not available 的錯誤,後來發現是最後部分的語句有問題,上面的語句是Michael經過修改後的,將不會有問題。

四、完成MySQL數據庫表配置

完成proFTPd.conf配置文件後,需要進行數據庫表的配置,包括創建表和插入數據。

1、登陸MySQL或者使用PHPmyadmin工具創建數據庫 FTP

#MySQLadmin create FTP

2、運行下面的sql語句創建表和插入必要數據

-- PHPMyAdmin SQL Dump

-- version 2.6.4-pl2

-- http://www.PHPmyadmin.Net

--

-- 主機: localhost

-- 生成日期: 2005 年 11 月 03 日 14:23

-- 服務器版本: 4.1.14

-- PHP 版本: 4.4.0

--

-- 數據庫: `FTP`

--

-- --------------------------------------------------------

--

-- 表的結構 `FTPGRPS`

--

CREATE TABLE `FTPGRPS` (

`groupname` text NOT NULL,

`gid` smallint(6) NOT NULL default '0',

`members` text NOT NULL

) ENGINE=MyISAM;;

--

-- 導出表中的數據 `FTPGRPS`

--

INSERT INTO `FTPGRPS` VALUES ('FTPGRP', 2001, 'FTPUSR');

INSERT INTO `FTPGRPS` VALUES ('ftpusers', 2002, 'FTP');

-- --------------------------------------------------------

--

-- 表的結構 `FTPUSERS`

--

CREATE TABLE `FTPUSERS` (

`userid` text NOT NULL,

`passwd` text NOT NULL,

`uid` int(11) NOT NULL default '0',

`gid` int(11) NOT NULL default '0',

`homedir` text,

`shell` text

) ENGINE=MyISAM;;

--

-- 導出表中的數據 `FTPUSERS`

--

INSERT INTO `FTPUSERS` VALUES ('Michael', 'testftp', 2001, 2001, '/var/FTP/incoming', '');

-- --------------------------------------------------------

--

-- 表的結構 `quotalimits`

--

CREATE TABLE `quotalimits` (

`name` varchar(30) default NULL,

`quota_type` enum('user','group','class','all') NOT NULL default 'user',

`per_session` enum('false','true') NOT NULL default 'false',

`limit_type` enum('soft','hard') NOT NULL default 'soft',

`bytes_in_avail` float NOT NULL default '0',

`bytes_out_avail` float NOT NULL default '0',

`bytes_xfer_avail` float NOT NULL default '0',

`files_in_avail` int(10) unsigned NOT NULL default '0',

`files_out_avail` int(10) unsigned NOT NULL default '0',

`files_xfer_avail` int(10) unsigned NOT NULL default '0'

) ENGINE=MyISAM;;

--

-- 導出表中的數據 `quotalimits`

--

-- 設置Michael用戶,磁盤配額1G,可以上傳下載流量2G,最多文件數10個

INSERT INTO `quotalimits` VALUES ('Michael', 'user', 'false', 'soft', 1.024e+09, 0, 2.048e+09, 10, 0, 0);

-- --------------------------------------------------------

--

-- 表的結構 `quotatallIEs`

--

CREATE TABLE `quotatallIEs` (

`name` varchar(30) NOT NULL default '',

`quota_type` enum('user','group','class','all') NOT NULL default 'user',

`bytes_in_used` float NOT NULL default '0',

`bytes_out_used` float NOT NULL default '0',

`bytes_xfer_used` float NOT NULL default '0',

`files_in_used` int(10) unsigned NOT NULL default '0',

`files_out_used` int(10) unsigned NOT NULL default '0',

`files_xfer_used` int(10) unsigned NOT NULL default '0'

) ENGINE=MyISAM;;













如果你想設置quota,只要在FTPquotalimits表裡設置一下就行了,這個表裡的各個參數分別代表:

代碼:

quotalimits表
name: - 用戶帳號
quota type: - user, group, class, all (we use user)
per_session: - true or false (we use true)
limit_type: - 硬限制 or 軟限制 (我們一般用硬限制)
bytes_in_avail: - 允許上傳的字節數
bytes_out_avail: - 允許下載的字節數
bytes_xfer_avail: - 允許傳輸的字節數(包括上傳/下載)
files_in_avail: - 允許上傳的文件數
files_out_avail: - 允許下載的文件數
files_xfer_avail: - 允許傳輸的文件數(包括上傳/下載)

五、完成最後的用戶、用戶組和目錄設置

1、創建proFTPd服務運行的用戶和用戶組

#pw groupadd FTPGRP -g 2001

#pw adduser FTPUSR -u 2001 -g 2001 -d /var/FTP/incoming -s /sbin/nologin

2、創建匿名登陸用戶映射的系統用戶和用戶組

#pw groupadd FTPusers -g 2002

#pw adduser ftp -u 2002 -g 2001 -d /var/FTP/incoming -s /sbin/nologin

六、運行測試配置系統服務

1、運行proFTPd服務

#/usr/local/sbin/proFTPd

2、測試

在任何一台可以訪問服務器的機器上測試ftp連接,使用Michael用戶和testFTP口令登陸,然後運行quote SITE QUOTA命令查看設置的磁盤限額信息,然後測試使用anonymous匿名用戶登陸測試。

3、監控和調試proFTPd服務

#/usr/local/sbin/proftpd proftpd -n -d 5 -c /usr/local/etc/proFTPd.conf

這樣在測試和連接ftp的時候,可以在主機上看到所有的proFTPd運行信息

4、日志監控

可以使用下面的命令查看系統日志、傳送日志等。

#tail -f /var/log/proFTPd.syslog

#tail -f /var/log/proFTPd.transferlog

5、配置系統自啟動proFTPd服務

#vi /etc/rc.conf

加入下面一行

proFTPd_enable=”YES”

這樣系統啟動的時候會調用/usr/local/etc/rc.d/proftpd.sh腳本啟動proFTPd服務。

ok

大功告成,大家可以根據自己的需要修改上面任何一個部分的細節,最好在自己理解的基礎上進行修改,整個過程包括proftpd的配置都很簡單。有問題歡迎大家來和我討論,經過Michael測試使用,發現proFTPd的確是個不錯的東東!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved