隨著計算機網絡的普及,計算機病毒有了快速傳播的機會,並且對數據文件的破壞日益嚴重,用戶需要經常對個人重要數據做異地備份。基於多用戶和數據隱私的考慮,提出了個人數據備份系統解決方案。它利用網絡存儲設備具有的大容量、高可靠性、高安全性特點,為用戶提供一定容量的空間來保存個人數據,同時利用軟件的權限管理很好地實現個人數據的保密性。
目前Linux下FTP服務器軟件主要有Wu-FTP和ProFTPD兩種。Wu-FTP是Red Hat Linux預裝軟件,但安全漏洞很多。ProFTPD針對Wu-FTP的弱項而開發,除改進了安全性外,還具備許多特點,如設置簡單、能以Stand-alone模式運行等。ProFTPD已經成為繼Wu-FTP之後最為流行的FTP服務器軟件之一。
ProFTPD在1.2版本之前使用Linux用戶賬號來管理用戶,即使用口令文件。該方式存在很多不足,與數據庫操作相比,用戶賬號的增加、口令的修改及賬號的刪除顯得十分復雜,並且文件無法支持並發讀寫;在Linux中用戶賬號具有Telnet的權限,安全上存在隱患;口令文件只有root賬號可以修改,如果使用浏覽器方式修改此文件,在技術上有一定難度。
在ProFTPD 1.2.4版中增加了數據庫管理用戶的功能,目前只支持MySQL數據庫,並且該賬號只適用於FTP 服務器,不存在安全上的隱患。本文使用的開發平台是Linux + ProFTPD + MySQL組合。
總體設計
系統後台采用FTP服務器來為用戶提供管理文件功能,可使用支持FTP 功能的各種軟件來操作數據文件。解決方案實現用戶賬號自動申請受理、密碼修改,網絡管理人員可以使用浏覽器來管理賬號修改空間限量、修改口令及刪除賬號等功能。
系統的核心是如何使用開發語言來動態地配置ProFTPD,實現對數量眾多用戶的賬號管理。
解決方案詳細內容
有關ProFTPD的安裝和配置文件內容的資料可以詳見系統文檔,本文重點介紹和數據庫有關的部分。
1. 安裝ProFTPD
(1)安裝MySQL數據庫,創建MySQL的安裝目錄的符號,連接到/usr/local/MySQL。
(2)編譯前的配置,將MySQL和空間限量模塊增加到編譯的選項中,代碼如下:
# ./configure --with-includes = /usr/local/mysql/include --with-librarIEs=/usr/local/mysql/lib/mysql --with- modules=mod_sql:mod_sql_MySQL:mod_quota
2. 增加用戶
在MySQL中創建FTPusers數據庫和users表用來保存FTP賬號信息,代碼如下:
CREATE TABLE users (
userid varchar(50) NOT NULL,
//用戶的FTP 賬號名稱
passWord varchar(50),
// 用戶的FTP賬號密碼
uid int(5) DEFAULT '0' NOT NULL,
//用戶主目錄的 uid
gid int(5) DEFAULT '65533' NOT NULL,
//用戶主目錄的 gid
homedir varchar(255),
//用戶主目錄
count int(11) DEFAULT '0',
//登陸次數
ftime timestamp(14),
//最後一次登陸時間
shell varchar(255) DEFAULT ' /bin/bash',
PRIMARY KEY (userid)
//主關鍵字
);
在proFTPd.conf中增加有關MySQL的配置,