Pure-FTPd 是一款免費(BSD)的,安全的,高質量和符合標準的FTP服務器。 側重於運行效率和易用性。 它提供了簡單的答案,他知足了大衆化的需求,包括普通用戶以及主機供應商們php
Pure-FTPd 安全性html
pure - ftpd 獲得了充分的支持,它是始終以安全設計爲理念,其代碼老是做爲有漏洞的來進行討論,並從新審覈。該服務能夠適應嚴格的安全須要作到權限分離。 甚至在不須要Root權限的狀況下經過其內建的chroot()仿真以及虛擬賬戶100%正常運行。避免密碼做爲明文傳輸:pure - ftpd的OpenSSL庫支持可選的 SSL / TLS加密層使用。mysql
利用WEB方式對FTP進行管理。這裏運用到與mysql的結合linux
安裝過程以下:ios
1、安裝apache php mysql mysql-server mysql-develweb
[root@localhost ~]# mkdir /mnt/cdromsql
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom數據庫
[root@localhost ~]# yum install httpd php php-mysql mysql mysql-server mysql-devel -yapache
[root@localhost ~]# service httpd startvim
[root@localhost ~]# service mysqld start
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# mysqladmin -u root -p password '123456'
Enter password: //原來的口令。默認沒有,直接回車。
上傳用到的軟件
[root@localhost ~]# ll
總計 10864
-rw------- 1 root root 1236 2012-07-26 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 07-26 15:15 Desktop
-rw-r--r-- 1 root root 34907 2012-07-26 install.log
-rw-r--r-- 1 root root 3681 2012-07-26 install.log.syslog
-rw-r--r-- 1 root root 29148 07-26 18:30 PureAdmin-0.3.tar.gz //pureftp管理工具
-rw-r--r-- 1 root root 578781 07-26 18:30 pure-ftpd-1.0.36.tar.gz //pureftp主程序
-rw-r--r-- 1 root root 4718 07-26 18:30 pureftpd-mysql.conf //pureftp鏈接mysql的配置文件
-rw-r--r-- 1 root root 2105 07-26 18:30 pureftp.sql //pureftp數據庫sql語句
-rw-r--r-- 1 root root 196917 07-26 18:30 webpureftp0.1.tar.gz //web方式pureftp
-rw-r--r-- 1 root root 10208541 07-26 18:30 ZendOptimizer-3.3.3-linux-hicode.ta //php加速工具
2、源碼安裝pure-ftp
[root@localhost ~]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/pure-ftpd-1.0.36/
[root@localhost pure-ftpd-1.0.36]# ./configure \
& gt; --prefix=/usr/local/pureftpd \
& gt; --with-mysql \
& gt; --with-shadow \
& gt; --with-pam \
& gt; --with-welcomemsg \
& gt; --with-uploadscript \
& gt; --with-cookie \
& gt; --with-virtualchroot \
& gt; --with-virtualhosts \
& gt; --with-diraliases \
& gt; --with-quotas \
& gt; --with-puredb \
& gt; --with-sysquotas \
& gt; --with-ratios \
& gt; --with-ftpwho \
& gt; --with-throttling \
& gt; --with-language=simplified-chinese
[root@localhost pure-ftpd-1.0.36]# make
[root@localhost pure-ftpd-1.0.36]# make install
三 生成pure-ftpd的服務腳本
[root@localhost pure-ftpd-1.0.36]# cd configuration-file/
[root@localhost configuration-file]# chmod a+x pure-config.pl
[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/
下面生成咱們的pureftp配置文件
[root@localhost configuration-file]# mkdir /usr/local/pureftpd/etc
[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/
四 生成pure-ftpd的服務
[root@localhost configuration-file]# cd ..
[root@localhost pure-ftpd-1.0.36]# cp contrib/redhat.init /etc/init.d/pureftpd
[root@localhost pure-ftpd-1.0.36]# chmod 755 /etc/init.d/pureftpd
[root@localhost pure-ftpd-1.0.36]# vim /etc/init.d/pureftpd
18 fullpath=/usr/local/pureftpd/sbin/$prog
19 pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
24 $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize
[root@localhost pure-ftpd-1.0.36]# service pureftpd start
啓動 pure-config.pl:Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -fftp -H -I15 -L10000:8 -m4 -s -U133:022 -u100 -k99 -Z
五.配置匿名用戶登陸環境
配置虛擬用戶登陸環境
[root@localhost pure-ftpd-1.0.36]# mkdir /ftproot
[root@localhost pure-ftpd-1.0.36]# chmod -R 777 /ftproot
[root@localhost pure-ftpd-1.0.36]# useradd virtualftp -d /ftproot -s /sbin/nologin -M
[root@localhost pure-ftpd-1.0.36]# chown virtualftp:virtualftp /ftproot
[root@localhost pure-ftpd-1.0.36]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
20 ChrootEveryone yes 限定在本身的家目錄
77 NoAnonymous yes 不容許匿名登陸
116 MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf mysql的認證
336 CreateHomeDir yes 容許用戶登陸後自動建立家目錄
[root@localhost pure-ftpd-1.0.36]# cd
[root@localhost ~]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
[root@localhost ~]# vim /usr/local/pureftpd/etc/pureftpd-mysql.conf
32 MYSQLPassword tmppasswd //爲了sql語句中的配置相同
45 MYSQLCrypt md5
[root@localhost ~]# vim pureftp.sql
50 INSERT INTO admin VALUES ('admin',MD5('123')); Web後臺管理員密碼
注意其中的
22 -- Login = ftp 此爲登陸數據庫的用戶
23 -- Password = tmppasswd 此爲登陸數據庫的密碼
31 CREATE DATABASE ftpusers; 建立名爲ftpusers的庫
50 INSERT INTO admin VALUES ('admin',MD5('123')); 此爲登陸web用的用戶密碼,可自行修改
<導入數據,導入前可能須要修改此sql文件的15行:前2個減號空一格-- ------------------------------------------------------->
[root@localhost ~]# mysql -u root -p < pureftp.sql 導入數據庫
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ftpusers |
| mysql |
| test |
+--------------------+
4 rows in set (0.01 sec)
mysql> use ftpusers;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+--------------------+
| Tables_in_ftpusers |
+--------------------+
| admin |
| users |
+--------------------+
2 rows in set (0.00 sec)
mysql> select * from admin;
+----------+----------------------------------+
| Username | Password |
+----------+----------------------------------+
| admin | 202cb962ac59075b964b07152d234b70 |
+----------+----------------------------------+
1 row in set (0.00 sec)
mysql> grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye
配置pureadmin
[root@localhost ~]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html/
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# mv PureAdmin-0.3/ pureadmin
[root@localhost html]# cd pureadmin/
[root@localhost pureadmin]# vim config.php
3 $cfg['dbname']='ftpusers';
4 $cfg['dbuser']='ftp';
5 $cfg['dbpasswd']='tmppasswd';
10 $cfg['passwdtype']='MD5';
14 $cfg['dir']='/ftproot/';
<?php
$cfg['dbhost']='localhost'; //mysql host
$cfg['dbname']='ftpusers'; //mysql db name 所用的庫<與前面導入的sql中要一致>
$cfg['dbuser']='ftp'; //mysql user 登陸mysql的賬號
$cfg['dbpasswd']='tmppasswd'; //mysql password 登陸mysql的密碼
//ftp config
$cfg['page']=10; 每頁顯示的用戶數量
//ftp passwd type : TEXT/CRYPT/MD5
$cfg['passwdtype']='MD5'; 認證模式<要與pureftpd-mysql.conf中一致>
//ftp default
$cfg['uid']=500; //uid 映射虛擬用戶的UID,即剛建立的virtualftp用戶
$cfg['gid']=500; //gid 同上
$cfg['dir']='/ftproot/'; //dir 默認家目錄
$cfg['qf']=0; //quotafiles 文件個數限制,0爲不限制
$cfg['qs']=100; //quotasize 總文件大小
$cfg['ul']=0; //ULBandwidth 上傳速率限制
$cfg['dl']=200; //DLBandwidth 下載速率限制
$cfg['ur']=0; //ULRatio 上傳比
$cfg['dr']=0; //DLRatio 下載比
$cfg['status']=1; //status 狀態,1爲激活;0爲禁止
$cfg['ip']= '*'; //ipaddress 可訪問IP,*爲全部
?>
[root@localhost pureadmin]# sevice pureftpd restart
[root@localhost pureadmin]# service pureftpd restart
虛擬用戶使用篇
(一)用pureDB認證
[root@localhost pureadmin]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
126 PureDB /usr/local/pureftpd/pureftpd.pdb
設置環境變量
[root@localhost pureadmin]# echo PATH=$PATH:/usr/local/pureftpd/bin/ >>/etc/profile
[root@localhost pureadmin]# . /etc/profile
[root@localhost ~]# pure-pw useradd user1 -u virtualftp -g virtualftp -d /ftproot/user1 –m //密碼設爲123
說明:
user1是用戶名,-u virtualftp是其實際的linux用戶,-d指定起始目錄,並鎖定於該目錄。若是不鎖定,則用-D;若是須要不一樣的權限,能夠創建新的linux用戶與組
若是用的系統自帶的ftp用戶,這樣的話還需修改配置文件pure-ftpd.conf中的MinUID爲ftp用戶的UID 14,不然登陸時會出現530錯誤;因此這裏建議建立另外一個非系統自帶的用戶作映射
創建用戶數據庫:
[root@localhost ~]# pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb
說明:從此每添加或修改用戶數據庫都應該執行一次mkdb
[root@localhost ~]# service httpd restart
[root@localhost ~]# service pureftpd restart
測試
在客戶端輸入http://192.168.145.200/pureadmin
這裏驗證碼不用
建立的虛擬用戶家目錄,會在虛擬用戶第一次登陸時自動建立
如建立了一個user3用戶
這裏能夠對虛擬帳號進行操做管理了
[root@localhost pureadmin]# ll /ftproot/
總計 0
當user3 登陸之後
[root@localhost pureadmin]# ll /ftproot/ 總計 4 drwxr-xr-x 2 1000 1000 4096 09-16 15:36 user3