參考資料:Google搜尋到的已忘了真正出處了,如有大大知道請告知,小弟再補上,如有侵權,也請告知,小弟將移除
安裝proftp MySQL 模組
[root@linux ~]# yum install proftpd-mysql
建立使用者proftpd'@'localhost 表示用,同時建立同名資料庫
創建資料表 for ftp 群組:
CREATE TABLE IF NOT EXISTS `ftp_group` (
`id` int(11) NOT NULL,
`groupname` varchar(20) NOT NULL,
`gid` smallint(6) NOT NULL default '5000',
`members` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) COMMENT='ProFTPD Group Table' AUTO_INCREMENT=6 ;
創建資料表 for ftp 使用者:
CREATE TABLE IF NOT EXISTS `ftp_user` (
`id` int(11) NOT NULL auto_increment,
`userid` varchar(30) NOT NULL,
`password` varchar(32) NOT NULL,
`uid` smallint(6) NOT NULL default '5000',
`gid` smallint(6) NOT NULL default '5000',
`home` varchar(255) NOT NULL default '/home/proftpd',
`shell` varchar(16) NOT NULL default '/sbin/nologin',
`count` int(10) NOT NULL default '0',
`address` varchar(50) NOT NULL,
`accessed` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `userid` (`userid`)
) COMMENT='ProFTPD User Table' AUTO_INCREMENT=8 ;
修改設定檔:
[root@linux ~]# vi /etc/proftpd.conf
然後於設定檔當中修改或加入下面資料:
DefaultRoot ~
RootLogin off
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/system.log
# 帳號不需要有效的shell(某些條件為前提來說,就是不能ssh的帳號(如虛擬帳號)也能登入)
RequireValidShell off
# START config proftpd MySQL
# 使用 mysql 資料庫為主
SQLBackend mysql
# 密碼認證 已 PASSWORD() 產生為主
SQLAuthTypes Backend
#SQLAuthTypes Crypt Backend Plaintext
SQLAuthenticate on
# MySQL 連線資訊,資料庫名稱@主機 帳號 密碼
SQLConnectInfo proftpdb@localhost proftpd password
# 使用者資料庫欄位
SQLUserInfo ftp_user userid password uid gid home shell
# 群組資料庫欄位
SQLGroupInfo ftp_group groupname gid members
# SQL Log 檔,這算比較選擇性的參數。不過我都留著來檢查 SQL 有沒有發生
# 什麼問題,主要是用在 debug 上面。
#SQLLogFile /var/log/proftpd/sql.log
# 當 Home 目錄不存在,會自己產生。
CreateHome on
#SQLMinID 500
# SQL Log 格式,當正確登入時,要執行的 SQL 語法
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now(),address='%h' where userid='%u'" ftp_user
# SQL Log 格式,當儲存或刪除檔案時,要執行的 SQL 語法
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() where userid='%u'" ftp_user
然後再重新啟動FTP:
[root@linux ~]# /etc/init.d/proftpd restart