小编:为了实现局域网用户的文件共享服务,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方式管理.当然还可以根据需求进行更加的详细的参数的限定:配额、时间、速率等等,有兴趣的博友可以自己尝试下!!!!!!