举例linux下一款常用的 FTP 服务器设置;
Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器。侧重于运行效率和易用性;
软件环境:
pure-ftpd-1.0.36.tar.gz
PureAdmin-0.3.tar.gz
pureftp.sql(虚拟账号的数据库导入文件)
pureftpd-mysql.conf(虚拟账号链接数据库的配置文件)
1、步骤流程;(整理需求的软件包)
# tar -zxvfpure-ftpd-1.0.36.tar.gz -C /usr/local/src/ 拆解ftp主程序;
# cd /usr/local/src/pure-ftpd-1.0.36/
进行 configure 编译、make配置、make install 安装;
./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 服务的主配置文件和服务脚本.
# cp pure-config.pl /usr/local/pureftpd/sbin/
# cp pure-config.pl /usr/local/pureftpd/sbin/
# mkdir/usr/local/pureftpd/etc
# cp pure-ftpd.conf /usr/local/pureftpd/etc/
拷贝生成pureftp 服务的启动脚本,并修改相应的参数。
配置pure-ftp 的主配置文件,添加虚拟账号的登录环境参数.
vim /usr/local/pureftpd/etc/pure-ftpd.conf
设置、允许匿名账号登录、但是不允许匿名账号创建目录;连接超时默认为15s、虚拟账号连接数据库的配置文件位置
2、创建虚拟用户登录的家目录.
[root@mail docs]# chkconfig dovecot on
[root@mail docs]# cd
[root@mail ~]# mkdir/ftproot
[root@mail ~]# chmod -R 777 /ftproot
创建虚拟账号登录时映射的服务器本地nologin 账号.
[root@mail ~]# useradd virtualftp -d /ftproot -s /sbin/nologin -M
[root@mail ~]# chown virtualftp:virtualftp /ftproot
虚拟账号的认证配置:
vim /usr/local/pureftpd/etc/pure-ftpd.conf
设置用户数据库目录、(会用pure-pw 生成)
3、建立虚拟账号与服务器本地账号的映射:
(:user1 是用户名,-u virtualftp 是其实际的linux 用户,-d 指定起始目录,并锁定于该目录。如果不锁定,则用-D;如果需要不同的权限,可以建立新的linux用户与组,如果用的系统自带的ftp 用户,这样的话还需修改配置文件pure-ftpd.conf 中的MinUID 为ftp 用户的UID 14,否则登录时会出现530 错误;所以这里建议创建另一个非系统自带的用户做映射。)
3、建立用户数据库:
# ./pure-pw mkdb/usr/local/pureftpd/pureftpd.pdb
源码配置web管理界面:
# tar -zxvfPureAdmin-0.3.tar.gz -C /var/www/extsuite/extmail/html/
4、导入数据文件pureftp.sql 到MySQL 数据库.(这个数据库是下载来的、是导进系统中的、但是数据库导入之前还应作如下的修改)
-- This mysqlscript is made by M.Mastenbroek 2002 - 2005
-- For more infolook at http://machiel.generaal.net
-- Version 2.0
--
--
-- mysql -u root-ppassword -h 127.0.0.1 < script.mysql
--
--
--
-- Host:localhost Database: ftpusers
---------------------------------------------------------
-- Serverversion 3.23 or 4.x
-- Scriptversion 1.4.0
--
--
--
-- Create MySQLuser called 'ftp'
-- Login = ftp
-- Password =tmppasswd
-- Host =127.0.0.1
--
FLUSH PRIVILEGES;
CREATE DATABASEftpusers;
USE ftpusers;
--
-- Table structurefor table 'admin'
--
CREATE TABLE admin(
Username varchar(35) NOT NULL default '',
Password char(32) binary NOT NULL default '',
PRIMARY KEY (Username)
);
--
-- Data for table'admin'
--
INSERT INTO admin VALUES('admin',MD5('123456'));
--
-- Table structurefor table 'users'
--
CREATE TABLE`users` (
`User` varchar(16) NOT NULL default '',
`Password` varchar(32) binary NOT NULLdefault '',
`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`)
);
--
-- Data for table'users'
# mysql -u root -p< pureftp.sql ;mysql 进入查看一下;并授权;
mysql> grantall privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql> flushprivileges;
5、pureftpd 的搭建;
修改pureadmin 的配置文件,修改数据库的相关参数;
6、配置pureftpd-mysql.conf 连接数据库文件;(也是下载导入到系统的)
# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
# vim pureftpd-mysql.conf
7、创建匿名账号的根目录;# mkdir /var/ftp ;浏览器登录测试。