天天看點

linux下配置pure-ftpd

Pure-FTPd的簡介

Pure-FTPd 是一款免費(BSD)的,安全的,高品質和符合标準的FTP伺服器。 側重于運作效率和易用性。 它提供了簡單的答案,他滿足了大衆化的需求,包括普通使用者以及主機供應商們。

Pure-FTPd 安全性

pure - ftpd 得到了充分的支援,它是始終以安全設計為理念,其代碼總是作為有漏洞的來進行讨論,并重新稽核。該服務可以适應嚴格的安全需要做到權限分離。 甚至在不需要Root權限的情況下通過其内建的chroot()仿真以及虛拟帳戶100%正常運作。避免密碼作為明文傳輸:pure - ftpd的OpenSSL庫支援可選的 SSL / TLS加密層使用。

系統認證方式有:

LDAPConfigFile

MySQLConfigFile

PGSQLConfigFile

PureDB

ExtAuth

PAMAuthentication

UnixAuthentication等

pureftp的一些常見問題:

1、預設安裝時允許匿名使用者和系統非root使用者登入

2、上傳下載下傳速度的限制不是很準确,浮動較大,比vsftp要差一些。

3、磁盤配額不是實時的。

配置具體步驟:

一、安裝所需軟體包

yum -y install php httpd php-mysql mysql mysql-server mysql-devel

二、源碼安裝pure-ftp

tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/

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

建立pureftpd的配置檔案存放的目錄

[root@localhost ~]#mkdir -p /usr/local/pureftpd/etc/

三、生成pure-ftpd的服務腳本

[root@localhost pure-ftpd-1.0.36]# cd configuration-file/

[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/

[root@localhost configuration-file]# chmod 755 pure-config.pl

[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/

拷貝pureftpd的控制腳本redhat.init

[root@localhost ~]# cd /usr/local/src/pure-ftpd-1.0.36/contrib/

[root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd

[root@localhost contrib]# chmod 755 /etc/init.d/pureftpd #給腳本可執行權限

四、生成pure-ftpd的服務

編輯控制腳本vim /etc/init.d/pureftpd,修改路徑如下

17 prog=pure-config.pl

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服務

service pureftpd restart

[root@localhost ~]# chkconfig --add pureftpd

[root@localhost ~]# chkconfig pureftpd on

五、配置虛拟使用者登入環境

[root@localhost ~]# mkdir /usr/local/src/pure-ftpd-1.0.36/contrib/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

修改配置檔案

vim /usr/local/pureftpd/etc/pure-ftpd.conf

其中有幾項要修改:

20 ChrootEveryone yes #限定在自己的家目錄

40 MaxClientsNumber 50 #最大連接配接數目

52 MaxClientsPerIP 8 #每個IP最大連接配接數目

71 NoAnonymous yes #不允許匿名登入

336 CreateHomeDir yes #允許使用者登入後自動建立家目錄

六、用pureDB認證

編輯pureftp的配置檔案

116 MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf

[root@localhost ~]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/

[root@localhost ~]# cd /usr/local/pureftpd/etc/

[root@localhost etc]# vim pureftpd-mysql.conf

27 MYSQLUser ftp #使用者ftp

32 MYSQLPassword tmppasswd #密碼

37 MYSQLDatabase ftpusers #資料庫

45 MYSQLCrypt md5 #密碼類型

導入資料庫檔案pureftp.sql

[root@localhost ~]# vim pureftp.sql

-- -------------------------------------------------------

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) VALUES('localhost','ftp',PASSWORD('passwd'),'Y','Y','Y','Y','N','N','N','N','N','N','N','N','N','N');

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)

) TYPE=MyISAM;

INSERT INTO admin VALUES ('admin',MD5('123'));

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`)

導入資料庫

[root@localhost ~]# mysql -u root -p < pureftp.sql

Enter password:

進入資料庫,檢視是否導入成功

[root@localhost ~]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;

4 rows in set (0.00 sec)

mysql&gt; 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&gt; show tables;

2 rows in set (0.01 sec)

mysql&gt; select * from admin;

1 row in set (0.00 sec)

檢視資料庫,并給ftp賬号設定權限,讓ftpusers資料庫下所有表ftp使用者都有通路的權限

mysql -u root –p

mysql&gt; grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';

mysql&gt; flush privileges; #使上述政策生效

mysql&gt; quit

配置基于PHP的管理界面PureAdmin-0.3

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

1 <?php

2 $cfg['dbhost']='localhost'; #mysql

3 $cfg['dbname']='ftpusers'; #mysql

4 $cfg['dbuser']='ftp'; #mysql的使用者

5 $cfg['dbpasswd']='tmppasswd'; #\

8 $cfg['page']=15;

10 $cfg['passwdtype']='MD5'; #

12 $cfg['uid']=1000; #使用者ID

13 $cfg['gid']=1000; #組ID

14 $cfg['dir']='/ftproot/'; #

15 $cfg['qf']=0;

16 $cfg['qs']=100; #

17 $cfg['ul']=0; #

18 $cfg['dl']=200; #

19 $cfg['ur']=0;

20 $cfg['dr']=0;

21 $cfg['status']=1;

22 $cfg['ip']= '*'; #允許所有IP

23 ?>

啟動apache服務

service httpd start

http://192.168.10.10/pureadmin/通路背景管理,管理者管理pureftpd

登陸管理背景,建立新的使用者user1和user2,并設定使用者的配額,下載下傳寬帶等基本資訊

linux下配置pure-ftpd

登入系統,可以看到mysql自動在表users中建立了兩個使用者user1和user2

2 rows in set (0.00 sec)

虛拟賬号映射到本地目錄

126 PureDB /usr/local/pureftpd/pureftpd.pdb

[root@localhost ~]# cd /usr/local/pureftpd/bin/

[root@localhost bin]# echo PATH=$PATH:/usr/local/pureftpd/bin/ &gt;&gt;/etc/profile

[root@localhost bin]# . /etc/profile #使之立即生效

[root@localhost ftproot]# pure-pw useradd user1 -u virtualftp -g virtualftp -d /ftproot/user1 –m #産生映射

Password:

Enter it again:

user1是使用者名,-u virtualftp是其實際的linux使用者,-d指定起始目錄,并鎖定于該目錄。如果不鎖定,則用-D;如果需要不同的權限,可以建立新的linux使用者與組

如果用的系統自帶的ftp使用者,這樣的話還需修改配置檔案pure-ftpd.conf中的MinUID為ftp使用者的UID 14,否則登入時會出現530錯誤;是以這裡建議建立另一個非系統自帶的使用者做映射

建立使用者資料庫

[root@localhost ftproot]# pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb

重新開機服務

service httpd restart

在linux系統下,我們發現系統在/ftproot/下自動建立了user1和user2的目錄

[root@localhost ~]# cd /ftproot/

[root@localhost ftproot]# ll

繼續閱讀