在这篇博客中,小编要与读者分享一下pureftp的搭建,读者可能知道,在linux下常用的ftp服务器是使用VSFTP搭建的居多,但是这样一来,服务器的登陆用户名和密码都是系统账号,必然会带来安全隐患,因此提出虚拟账号的概念,登陆ftp服务器的用户并不是系统中实际存在的用户,而是虚拟用户,但是在登陆ftp服务器的之后会映射成为一个合法系统账号(类似NAT的概念),目前vsftp也可以实现虚拟账号,但是相较于pureftp而言要逊色几分,加上pureftp可以结合web管理界面(pureadmin实现)来进行管理,可以实现用户空间的配额管理等优点,因此小编觉得学会pureftp的搭建与管理是很具实用价值的。
软件环境:
LAMP环境
pure-ftpd-1.0.36.tar.gz
PureAdmin-0.3.tar.gz
pureftp.sql(虚拟账号的数据库导入文件)
pureftpd-mysql.conf(虚拟账号链接数据库的配置文件)
Step 1:源码安装Pure-ftp Server.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 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
|
拷贝生成pureftp服务的主配置文件和服务脚本.
1
2
3
4
5
|
# 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/
|
拷贝生成pureftp服务的启动脚本,并编辑修改相应参数.
1
2
|
# cp contrib/redhat.init /etc/init.d/pureftpd
# vim /etc/init.d/pureftpd
|
1
2
3
|
# chmod
755
/etc/init.d/pureftpd
# chkconfig --add pureftpd
# chkconfig pureftpd on
|
配置pure-ftp的主配置文件,添加虚拟账号的登录环境参数.
1
|
# vim /usr/local/pureftpd/etc/pure-ftpd.conf
|
创建虚拟用户登录的家目录.
1
2
|
# mkdir /ftproot
# chmod -R
777
/ftproot
|
创建虚拟账号登录时映射的服务器本地nologin账号.
1
2
|
# useradd virtualftp -d /ftproot -s /sbin/nologin -M
# chown virtualftp.virtualftp /ftproot
|
虚拟账号的认证配置.
1
|
# vim /usr/local/pureftpd/etc/pure-ftpd.conf
|
建立虚拟账号与服务器本地账号的映射.
1
2
|
# 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错误;所以这里建议创建另一个非系统自带的用户做映射.
建立用户数据库.
1
|
# ./pure-pw mkdb /usr/local/pureftpd/pureftpf.pdb
|
Step 2:PureAdmin的配置(管理pureftp的web站点).
1
2
3
|
# tar zxvf PureAdmin-
0.3
.tar.gz -C /
var
/www/html/
# cd /
var
/www/html/
# mv PureAdmin-
0.3
pureadmin
|
导入数据文件pureftp.sql到MySQL数据库,因为小编使用的MYSQL是5.1以上的版本,所以PureAdmin的表结构的引擎并不能够完全兼容,要做出修改.
注:导入前作如下修改.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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
`)
) ;
|
导入数据,并授权.
1
2
3
4
|
# mysql -u root -p < pureftp.sql
mysql>grant all privileges on ftpusers.* to ftp@localhost >identified by
'tmppasswd'
;
mysql>flush privileges;
mysql>quit;
|
查看导入是否成功.
修改pureadmin的配置文件,修改数据库的相关参数.
1
|
# vim /
var
/www/html/pureadmin/config.php
|
配置pureftpd-mysql.conf连接数据库文件.
1
|
# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
|
创建匿名账号的根目录.
1
|
# mkdir /
var
/ftp
|
Step 3:浏览器登录测试。
http://10.1.1.100/pureadmin(用户名:admin;密码:123456)
匿名账号登录测试.
本文转自 chenming421 51CTO博客,原文链接:http://blog.51cto.com/wnqcmq/1197629