小編:爲了實現局域網用戶的文件共享服務,FTP服務器在企業網中扮演着很重要的角色。在Linux環境下,傳統的基於vsftpd搭建的FTP服務器,存在着很多不足之處,不能支持虛擬賬號的概念,管理起來很不方便.所以,小編,今天就和大家一起搭建一個基於虛擬賬號的FTP服務器:Pure-ftp.
基本環境:
LAMP【Linux+Apache+MySQL+PHP(可選)】
方式一:RMP搭建(略)
方式二:源碼搭建
參考博客:http://tywangpanpan.blog.51cto.com/6264315/1177325
【軟件需求】
pure-ftpd-1.0.36.tar.gz
PureAdmin-0.3.tar.gz
pureftp.sql(虛擬賬號的數據庫導入文件)
pureftpd-mysql.conf(虛擬賬號鏈接數據庫的配置文件)
【具體實現步驟】
Step1:源碼安裝Pure-ftp Server.
tar zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/
cd /usr/local/src/pure-ftpd-1.0.36
./configure \
--prefix=/usr/local/pureftpd \
--with-mysql \
--with-shadow \
--with-pam \
--with-welcomemsg \
--with-uploadscript \
--with-cookie \
--with-virtualchroot \
--with-virtualhosts \
--with-diraliases \
--with-quotas \
--with-puredb \
--with-sysquotas \
--with-ratios \
--with-ftpwho \
--with-throttling \
--with-language=simplified-chinese
make && make install
Step2:拷貝生成pureftp服務的主配置文件和服務腳本.
cd configuration-file/
chmod a+x pure-config.pl
cp pure-config.pl /usr/local/pureftpd/sbin/
mkdir /usr/local/pureftpd/etc
cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
Step3:拷貝生成pureftp服務的啓動腳本,並編輯修改相應參數.
cp contrib/redhat.init /etc/init.d/pureftpd
vim /etc/init.d/pureftpd
chmod 755 /etc/init.d/pureftpd
chkconfig --add pureftpd
chkconfig pureftpd on
Step4:配置pure-ftp的主配置文件,添加虛擬賬號的登錄環境參數.
vim /usr/local/pureftpd/etc/pure-ftpd.conf
Step5:創建虛擬用戶登錄的家目錄.
mkdir /ftproot
chmod -R 777 /ftproot
Step6:創建虛擬賬號登錄時映射的服務器本地nologin賬號.
useradd virtualftp -d /ftproot -s /sbin/nologin -M
chown virtualftp.virtualftp /ftproot
Step7:虛擬賬號的認證配置.
vim /usr/local/pureftpd/etc/pure-ftpd.conf
Step8:建立虛擬賬號與服務器本地賬號的映射.
cd /usr/local/pureftpd/bin
./pure-pw useradd user1 -u virtualftp -g virtualftp -d /ftproot/user1 -m
說明:
user1是用戶名,-u virtualftp是其實際的linux用戶,-d指定起始目錄,並鎖定於該目錄。如果不鎖定,則用-D;如果需要不同的權限,可以建立新的linux用戶與組,如果用的系統自帶的ftp用戶,這樣的話還需修改配置文件pure-ftpd.conf中的MinUID爲ftp用戶的UID 14,否則登錄時會出現530錯誤;所以這裏建議創建另一個非系統自帶的用戶做映射.
Step9:建立用戶數據庫.
./pure-pw mkdb /usr/local/pureftpd/pureftpf.pdb
Step10:源碼配置Web管理界面.
tar zxvf PureAdmin-0.3.tar.gz -C /var/www/extsuite/extmail/html/
cd /var/www/extsuite/extmail/html/
mv PureAdmin-0.3 pureadmin
Step11:導入數據文件pureftp.sql到MySQL數據庫.
注:導入前作如下修改.
INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,ssl_cipher,x509_issuer,x509_subject) VALUES('localhost','ftp',PASSWORD('passwd'),'Y','Y','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','Y','Y');
FLUSH PRIVILEGES;
CREATE DATABASE ftpusers;
USE ftpusers;
CREATE TABLE admin (
Username varchar(35) NOT NULL default '',
Password char(32) binary NOT NULL default '',
PRIMARY KEY (Username)
) ;
INSERT INTO admin VALUES ('admin',MD5('123456'));
CREATE TABLE `users` (
`User` varchar(16) NOT NULL default '',
`Password` varchar(32) binary NOT NULL default '',
`Uid` int(11) NOT NULL default '14',
`Gid` int(11) NOT NULL default '5',
`Dir` varchar(128) NOT NULL default '',
`QuotaFiles` int(10) NOT NULL default '500',
`QuotaSize` int(10) NOT NULL default '30',
`ULBandwidth` int(10) NOT NULL default '80',
`DLBandwidth` int(10) NOT NULL default '80',
`Ipaddress` varchar(15) NOT NULL default '*',
`Comment` tinytext,
`Status` enum('0','1') NOT NULL default '1',
`ULRatio` smallint(5) NOT NULL default '1',
`DLRatio` smallint(5) NOT NULL default '1',
PRIMARY KEY (`User`),
UNIQUE KEY `User` (`User`)
) ;
導入數據,並授權.
mysql -u root -p < pureftp.sql
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql>flush privileges;
mysql>quit;
查看導入是否成功.
Step12:修改pureadmin的配置文件,修改數據庫的相關參數.
vim /var/www/extsuite/extmail/html/pureadmin/config.php
Step13:配置pureftpd-mysql.conf連接數據庫文件.
cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
創建匿名賬號的根目錄.
mkdir /var/ftp
【測試分析】
瀏覽器登錄測試。
http://10.1.1.100/pureadmin(用戶名:admin;密碼:123456)
添加虛擬賬號.
服務器登陸測試.
查看虛擬賬號的家目錄.
客戶端虛擬賬號登陸測試.
匿名賬號登錄測試.
【小編總結】
通過今天的介紹,我們通過Pure-Ftp簡單的實現了給予虛擬賬號的FTP服務器,而且實現了方便的Web方式管理.當然還可以根據需求進行更加的詳細的參數的限定:配額、時間、速率等等,有興趣的博友可以自己嘗試下!!!!!!