一:簡介
Pure-FTPd 是一款免費的,安全的,高品質和符合标準的FTP伺服器。 側重于運作效率和易用性。 它提供了簡單的答案,他滿足了大衆化的需求,包括普通使用者以及主機供應商們。
pure - ftpd 得到了充分的支援,它是始終以安全設計為理念,其代碼總是作為有漏洞的來進行讨論,并重新稽核。該服務可以适應嚴格的安全需要做到權限分離。 甚至在不需要Root權限的情況下通過其内建的chroot()仿真以及虛拟帳戶100%正常運作。避免密碼作為明文傳輸:pure - ftpd的OpenSSL庫支援可選的 SSL / TLS加密層使用。
二:案例
配置步驟
首先搭建lnmp環境
[root@localhost ~]# yum -y install http php php-mysql mysql mysql-server mysql-devel
啟動httpd服務,開機自啟動
[root@localhost ~]# service httpd start
啟動 httpd: [确定]
[root@localhost ~]# chkconfig httpd on
啟動mysqld服務,開機自啟動
[root@localhost ~]# service mysqld start
Support MySQL by buying support/licenses at http://shop.mysql.com
[确定]
啟動 MySQL: [确定]
[root@localhost ~]# chkconfig mysqld on
為mysql建密碼
[root@localhost ~]# mysqladmin -u root -p password '123456'
1.源碼安裝pure-ftp,解壓pure-ftpd
[root@localhost pureftp]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/
[root@localhost pureftp]# cd /usr/local/src//pure-ftpd-1.0.36/
檢測預編譯環境
[root@localhost 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
編譯
[root@localhost pure-ftpd-1.0.36]# make
将檔案放入指定位置
[root@localhost pure-ftpd-1.0.36]# make install
建立配置檔案存放位置
[root@localhost pure-ftpd-1.0.36]# mkdir /usr/local/pureftpd/etc
拷貝pureftp配置檔案
[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/
拷貝調用檔案,修改權限可執行
[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/
[root@localhost configuration-file]# chmod 755 pure-config.pl
拷貝pureftp控制腳本
[root@localhost pure-ftpd-1.0.36]# cd contrib/
[root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd
給予執行權限
[root@localhost contrib]# chmod 755 /etc/init.d/pureftpd
編輯控制腳本
[root@localhost contrib]# 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
啟動pureftpd服務
[root@localhost sbin]# service pureftpd start
啟動 pure-config.pl:Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -fft-m4 -s -U133:022 -u100 -k99 -Z
[root@localhost contrib]# chkconfig --add pureftpd
[root@localhost contrib]# chkconfig --list |grep pureftpd
pureftpd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
2.配置虛拟使用者登入環境
建立本地帳号目錄
[root@localhost contrib]# mkdir /ftproot
[root@localhost contrib]# chmod -R 777 /ftproot
建立接虛拟使用者對應的系統使用者
[root@localhost contrib]# useradd virtualftp -d /ftproot -s /sbin/nologin -M
修改所屬者和所屬組
[root@localhost contrib]# chown virtualftp:virtualftp /ftproot
編輯pureftpd主配置檔案
[root@localhost contrib]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
NoAnonymous yes //不允許匿名登入
CreateHomeDir yes //允許使用者登入後自動建立家目錄
重新開機服務
[root@localhost contrib]# service pureftpd restart
停止 pure-config.pl:
啟動 pure-config.pl:Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -E -fftp -H -I15 -L10000:8 -m4 -s -U133:022 -u100 -j -k99 –Z
3.用mysql認證
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
拷貝配置檔案
[root@localhost pureftp]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
[root@localhost pureftp]# cd /usr/local/pureftpd/etc/
編輯配置檔案
[root@localhost etc]# vim pureftpd-mysql.conf
MYSQLPassword tmppasswd
MYSQLCrypt md5
導入資料
[root@localhost pureftp]# mysql -u root -p <pureftp.sql
Enter password:
檢視資料庫
[root@localhost pureftp]# mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> showdatabases;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'showdatabases' at line 1
mysql> show databases;
+--------------------+
| Database |
| information_schema |
| ftpusers |
| mysql |
| test |
4 rows in set (0.01 sec)
4.檢視mysql
Your MySQL connection id is 6
mysql> grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
5.配置web程式PureAdmin
解壓
[root@localhost pureftp]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html/
修改檔案名稱
[root@localhost pureftp]# cd /var/www/html/
[root@localhost html]# mv PureAdmin-0.3 pureadmin
編輯config.php
[root@localhost html]# cd pureadmin/
[root@localhost pureadmin]# vim config.php
<?php
2 $cfg['dbhost']='localhost'; //mysql host
3 $cfg['dbname']='ftpusers'; //mysql db name
4 $cfg['dbuser']='ftp'; //mysql user
5 $cfg['dbpasswd']='tmppasswd'; //mysql password
6
7 //ftp config
8 $cfg['page']=15;
9 //ftp passwd type : TEXT/CRYPT/MD5
10 $cfg['passwdtype']='MD5';
11 //ftp default
12 $cfg['uid']=1000; //uid
13 $cfg['gid']=1000; //gid
14 $cfg['dir']='/ftproot/'; //dir
15 $cfg['qf']=0; //quotafiles
16 $cfg['qs']=100; //quotasize
17 $cfg['ul']=0; //ULBandwidth
18 $cfg['dl']=200; //DLBandwidth
19 $cfg['ur']=0; //ULRatio
20 $cfg['dr']=0; //DLRatio
21 $cfg['status']=1; //status
6.區域帳号映射到本地帳号
[root@localhost ftproot]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
126 PureDB /usr/local/pureftpd/pureftpd.pdb
設定環境變量
[root@localhost bin]# echo PATH=$PATH:/usr/local/pureftpd/bin/ >>/etc/profile
使之立即生效
[root@localhost bin]# . /etc/profile
建立虛拟帳号
[root@localhost bin]# pure-pw useradd user9 -u virtualftp -g virtualftp -d /ftproot/user9 -m
Password:
Enter it again:
建立使用者資料庫
[root@localhost bin]# pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb
測試:
背景使用管理帳号登入建立使用者
檢視資料庫資訊
檢視ftproot目錄下多了兩個檔案
[root@localhost bin]# cd /ftproot/
[root@localhost ftproot]# ll
總計 8
drwxr-xr-x 2 1000 1000 4096 08-19 21:58 user10
drwxr-xr-x 2 virtualftp virtualftp 4096 08-19 21:57 user9