Proftpd安裝手冊(cè)(Ubuntu)
操作系統(tǒng)版本:Ubuntu8.10server(intrepid)
linux核心:2.6.27-7-server
MySQL 在安裝操作系統(tǒng)時(shí)已經(jīng)選擇安裝(或者安裝完系統(tǒng)后進(jìn)行在線安裝:apt-get install mysql-server mysql-client)
一、安裝proftpd
這里安裝的是1.3.2(解決中文字符顯示問題)
編譯安裝步驟如下:
1、切換到用戶本地源目錄:cd /usr/local/src
2、下載源文件:wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2.tar.gz
3、解壓:tar -zxvf proftpd-1.3.2.tar.gz
4、安裝gcc編譯套件:apt-get install build-essential
5、安裝更新gcc:apt-get install gcc
6
- 、./configure --enable-shadow --enable-autoshadow --enable-dso --enable-nls --with-modules=mod_ifsession:mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql
- --with-includes=/usr/include/mysql --with-libraries=/usr/lib/
- (--with-includes=MySQL服務(wù)器includes所在的位置,用到mysql.h;
- --with-libraries=MySQL服務(wù)器libraries所在的位置,用到libmysqlclient.a)
7、make
8、make install
9、make clean(重新編譯用,***次跳過,重復(fù)6-8步驟)
10、制作開機(jī)啟動(dòng)腳本:vi /etc/init.d/proftpd
粘貼如下代碼:
- #!/bin/sh
- # ProFTPD files
- FTPD_BIN=/usr/local/sbin/proftpd
- FTPD_CONF=/usr/local/etc/proftpd.conf
- PIDFILE=/usr/local/var/proftpd.pid
- # If PIDFILE exists, does it point to a proftpd process?
- if [ -f $PIDFILE ]; then
- pid=`cat $PIDFILE`
- fi
- if [ ! -x $FTPD_BIN ]; then
- echo "$0: $FTPD_BIN: cannot execute"
- exit 1
- fi
- case $1 in
- start)
- if [ -n "$pid" ]; then
- echo "$0: proftpd [PID $pid] already running"
- exit
- fi
- if [ -r $FTPD_CONF ]; then
- echo "Starting proftpd..."
- $FTPD_BIN -c $FTPD_CONF
- else
- echo "$0: cannot start proftpd -- $FTPD_CONF missing"
- fi
- ;;
- stop)
- if [ -n "$pid" ]; then
- echo "Stopping proftpd..."
- kill -TERM $pid
- else
- echo "$0: proftpd not running"
- exit 1
- fi
- ;;
- restart)
- if [ -n "$pid" ]; then
- echo "Rehashing proftpd configuration"
- kill -HUP $pid
- else
- echo "$0: proftpd not running"
- exit 1
- fi
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
- exit 1
- ;;
- esac
- exit 0
11、給proftpd設(shè)置非root用戶的可執(zhí)行權(quán)限:chmod +x proftpd
12、安裝啟動(dòng)服務(wù)管理程序:apt-get install sysv-rc-conf
13、sysv-rc-conf設(shè)置proftpd開機(jī)自啟動(dòng)
#p#
二、配置proftpd.conf文件
1、客戶端支持GBK編碼:UseEncoding UTF-8 GBK
2、加快登陸速度:IdentLookups off
UseReverseDNS off
3、定義登錄歡迎消息文件:
DisplayLogin /usr/local/etc/ftplogin.msg
4、權(quán)限控制:(未解決中文登錄名權(quán)限控制)
5、MySQL驗(yàn)證:
- #-------- load sql.mod for mysql authoritative --------#
- #配置FTP用戶為MySQL數(shù)據(jù)庫(kù)認(rèn)證方式
- #SQLConnectInfo databaseName@hostName:port userName password
- SQLConnectInfo proftpd@localhost ftpuser 123456
- #Backend表示用戶認(rèn)證方式為MySQL數(shù)據(jù)庫(kù)的認(rèn)證方式
- #Plaintext表示明文認(rèn)證方式,排在最前面的為***使用的方式
- SQLAuthTypes Backend Plaintext
- #校驗(yàn)數(shù)據(jù)表
- #SQLAuthenticate users groups usersetfast groupsetfast
- SQLAuthenticate users
- #指定ftp用戶數(shù)據(jù)表的名字和其中的字段名,表名可自行定義,字段名不要改動(dòng)。
- SQLUserInfo ftpusers userid passwd uid gid homedir shell
- #指定ftp用戶組數(shù)據(jù)表的名字和其中的字段名,這個(gè)數(shù)據(jù)表是可選的,字段名不要改動(dòng)。
- #SQLGroupInfo ftpGroup groupname gid members
- #指定是否必須為FTP用戶指定一個(gè)系統(tǒng)shell,off表示不用指定,on表示必須指定。為了系統(tǒng)安全應(yīng)該指定為off。
- RequireValidShell off
- #如果用戶主目錄不存在,則系統(tǒng)會(huì)根據(jù)此用戶在用戶數(shù)據(jù)表中的homedir字段的值新建一個(gè)目錄
- #SQLHomedirOnDemand on
- SQLNegativeCache on
- SQLLogFile /var/log/proftpd.sql.log
- #用戶登錄歡迎窗口中顯示登錄用戶已訪問次數(shù)
- SQLNamedQuery getlogins SELECT "login_counts from ftpusers where userid='%u'"
- SQLNamedQuery updatelogins UPDATE "login_counts=login_counts+1 WHERE userid='%u'" ftpusers
- SQLShowInfo PASS "230" "You've logged on %{getlogins} times!"
- SQLLog PASS updatelogins
- #-------- load sql.mod for mysql authoritative --------#
6、磁盤配額:
- #-------- load qudes.mod for Quota limit --------#
- #打開磁盤限額引擎
- QuotaEngine on
- #設(shè)置磁盤限額
- QuotaDirectoryTally on
- #設(shè)置磁盤容量顯示時(shí)的單位
- QuotaDisplayUnits Mb
- #設(shè)置磁盤限額日志文件
- QuotaLog "/var/log/proftpd.quota.log"
- #允許顯示磁盤限額信息,ftp登錄后可執(zhí)行quote site quota命令查看當(dāng)前磁盤使用情況
- QuotaShowQuotas on
- #指定磁盤限額模塊使用的數(shù)據(jù)庫(kù)信息
- SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, \
- bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits \
- WHERE name = '%{0}' AND quota_type = '%{1}'"
- SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, \
- bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \
- WHERE name = '%{0}' AND quota_type = '%{1}'"
- SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, \
- bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, \
- files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, \
- files_xfer_used = files_xfer_used + %{5} \
- WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
- SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
- QuotaLimitTable sql:/get-quota-limit
- QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
- #--------- load qudes.mod for Quota limit --------#
#p#
三、建立FTP用戶認(rèn)證相關(guān)表
1、默認(rèn)root用戶只能從本地登陸,新建admin用戶:
- shell>mysql -u root -p
- password: ********
- mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY "123456" WITH GRANT OPTION;
- mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"localhost" IDENTIFIED BY "123456" WITH GRANT OPTION;
2、創(chuàng)建proftpd數(shù)據(jù)庫(kù):
- mysql>CREATE DATABASE proftpd;
3、建立一個(gè)訪問proftpd庫(kù)用戶:ftpuser
- mysql>GRANT ALL PRIVILEGES ON proftpd.* TO ftpuser@"%" IDENTIFIED BY "123456";
- mysql>GRANT ALL PRIVILEGES ON proftpd.* TO ftpuser@"localhost" IDENTIFIED BY "123456";
4、建立用戶驗(yàn)證表:
- shell>mysql -u ftpuser -p proftpd
- password: ********
- mysql>CREATE TABLE ftpusers (
- userid VARCHAR(30) NOT NULL UNIQUE,
- passwd VARCHAR(80) NOT NULL,
- uid INTEGER UNIQUE,
- gid INTEGER,
- homedir VARCHAR(255),
- shell VARCHAR(255)
- )DEFAULT CHARSET=gbk;
5、建立磁盤限額數(shù)據(jù)表
- CREATE TABLE quotalimits (
- name VARCHAR(30),
- quota_type ENUM("user", "group", "class", "all") NOT NULL,
- per_session ENUM("false", "true") NOT NULL,
- limit_type ENUM("soft", "hard") NOT NULL,
- bytes_in_avail FLOAT NOT NULL,
- bytes_out_avail FLOAT NOT NULL,
- bytes_xfer_avail FLOAT NOT NULL,
- files_in_avail INT UNSIGNED NOT NULL,
- files_out_avail INT UNSIGNED NOT NULL,
- files_xfer_avail INT UNSIGNED NOT NULL
- )DEFAULT CHARSET=gbk;
- CREATE TABLE quotatallies (
- name VARCHAR(30) NOT NULL,
- quota_type ENUM("user", "group", "class", "all") NOT NULL,
- bytes_in_used FLOAT NOT NULL,
- bytes_out_used FLOAT NOT NULL,
- bytes_xfer_used FLOAT NOT NULL,
- files_in_used INT UNSIGNED NOT NULL,
- files_out_used INT UNSIGNED NOT NULL,
- files_xfer_used INT UNSIGNED NOT NULL
- )DEFAULT CHARSET=gbk;
- #以上quotalimits表是FTP用戶的磁盤限額配置信息,quotatallies表存放的是用戶磁盤限額變動(dòng)的信息。
- #quotatallies表不需要作修改,由程序自動(dòng)記錄
- #下面是quotalimits 表中各字段的含意:
- quota_type 磁盤限額的鑒別
- bytes_in_avail 上傳***字節(jié)數(shù),就是FTP用戶空間容量
- bytes_out_avail 下載***字節(jié)數(shù)
- bytes_xfer_avail 總共可傳輸?shù)奈募?**字節(jié)數(shù)(上傳和下載流量)
- files_in_avail 總共能上傳文件的數(shù)目
- files_out_avail 能從服務(wù)器上下載文件的總數(shù)目
- files_xfer_avail 總共可傳輸文件的數(shù)目(上傳和下載)
6、數(shù)據(jù)表數(shù)據(jù)初始化
6.1 建立用戶:
如果想要一次增加一個(gè)新記錄,可以使用INSERT語(yǔ)句:
- INSERT INTO ftpUsers (userid, passwd, uid, gid, homedir, shell) values ('centre', password('centre'), 2001,2000, '/home/ftp','/usr/sbin/nologin');
如果想要將文本文件“ftpusers.txt”裝載到ftpusers表中,使用LOAD DATA語(yǔ)句:
- LOAD DATA LOCAL INFILE '/path/ftpusers.txt' INTO TABLE ftpusers CHARACTER SET 'gbk' LINES TERMINATED BY '\r\n';
6.2 建立磁盤配額:
test 用戶512000000byte限制
- INSERT INTO quotalimits (name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail) VALUES ('test', 'user', 'true', 'hard', 512000000, 0,0,0,0,0);
【編輯推薦】