LNMP:pureftpd+pureadmin

首先,需要LAMP或者LNMP环境

安装包

pure-ftpd-1.0.36.tar.gz 点我进入下载页面
PureAdmin-0.3.tar.gz 点我进入下载页面
pureftp.sql(虚拟账号的数据库导入文件) 点我进入下载页面
pureftpd-mysql.conf(虚拟账号链接数据库的配置文件) 点我进入下载页面

一、安装pureftpd

# wget http://download.pureftpd.org/pub/pure-ftpd/releases/obsolete/pure-ftpd-1.0.36.tar.gz
# 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

# make && make install

若出现configure: error: liblber is needed for LDAP support,需安装openldap-devel
若出现configure: error: Your MySQL client libraries aren't properly installed, 需要安装mysql-devel
出现类似configure: error: Your MySQL client libraries aren't properly installed 的错误,请将mysql目录下的 include/mysql下的mysql.h文件以及lib/mysql下的全部文件,连接(直接复制过去或许也可)到 /usr/lib 目录下


  • 1.拷贝生成pureftp服务的主配置文件和服务脚本:
# chmod a+x configuration-file/pure-config.pl
# cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/
# mkdir /usr/local/pureftpd/etc
# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
  • 2.拷贝生成pureftp服务的启动脚本,并编辑修改相应参数(18、19、24行):
# cp contrib/redhat.init /etc/init.d/pureftpd
# vim /etc/init.d/pureftpd
 
 18 fullpath=/usr/local/pureftpd/sbin/$prog
 19 pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
 20 
 21 

 24         $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize


# chmod 755 /etc/init.d/pureftpd
# chkconfig --add pureftpd
# chkconfig pureftpd on
  • 3.配置pure-ftp的主配置文件,添加虚拟账号的登录环境参数:
# vim /usr/local/pureftpd/etc/pure-ftpd.conf
77 NoAnonymous                 yes            //不允许匿名登录
104 MaxIdleTime                 30              //超时时间,30分钟
116  MySQLConfigFile              /usr/local/pureftpd/etc/pureftpd-mysql.conf      //连接数据库的配置文件路径

214 Bind                      192.168.1.224,21          //监听的IP和端口
227  UserBandwidth             1024                     //所有用户的带宽大小,1024KB/s  这个一般没必要控制
336 CreateHomeDir               yes                      //允许用户创建家目录
344 Quota                       10000:10240              //允许用户存放的最大文件数量,和用户空间大小
397 # PerUserLimits            3:20                       //认证用户和匿名用户的最大链接数
  • 4.创建用户的家目录:
# mkdir /data/resources/ftpdata -p
# chmod -R 777 /data/resources/ftpdata/
  • 5.创建虚拟账号登录时映射的服务器本地nologin账号:
# useradd virtualftp -d /data/resources/ftpdata/ -s /sbin/nologin -M
# chown virtualftp.virtualftp /data/resources/ftpdata/
  • 6.虚拟账号的认证配置:
# vim /usr/local/pureftpd/etc/pure-ftpd.conf
126  PureDB                        /usr/local/pureftpd/etc/pureftpd.pdb       //.pdb文件位置
  • 7.建立虚拟账号与服务器本地账号的映射:
# cd /usr/local/pureftpd/bin/
# ./pure-pw useradd user1 -u virtualftp -g virtualftp -d /data/resources/ftpdata/user1 -m

说明:

user1是用户名,-u virtualftp是其实际的linux用户,-d指定起始目录,并锁定于该目录。如果不锁定,则用-D;如果需要不同的权限,可以建立新的linux用户与组,如果用的系统自带的ftp用户,这样的话还需修改配置文件pure-ftpd.conf中的MinUID为ftp用户的UID 14,否则登录时会出现530错误;所以这里建议创建另一个非系统自带的用户做映射.

  • 8.建立用户数据库:

# ./pure-pw mkdb /usr/local/pureftpd/pureftpf.pdb

二、安装PureAdmin web管理

  • 1.解压到指定目录
# tar -zxvf PureAdmin-0.3.tar.gz
# mv PureAdmin-0.3 /var/www/html/pureadmin     //这里的路径是你的apache或者nginx的主页位置,也就是pureadmin这个目录要和index.php或者index.tml一个目录下
  • 2.导入数据文件pureftp.sql到MySQL数据库
    此SQL脚本文件,文章开头有下载链接,如果链接失效,可直接复制下面语句
#vi pureftp.sql
-- This mysql script is made by M.Mastenbroek 2002 - 2005
-- For more info look at http://machiel.generaal.net
-- Version 2.0
--
-- You don't need this script when you already have the database
-- or when you use the install.php configuration script successfully.
--
-- Example how to execute this script from command line:
--
-- mysql -u root -ppassword -h 127.0.0.1 < script.mysql
--
--
--
-- Host: localhost    Database: ftpusers
---------------------------------------------------------
-- Server version   3.23 or 4.x
-- Script version   1.4.0
--
--
--
-- Create MySQL user called 'ftp'
-- Login = ftp
-- Password = tmppasswd
-- Host = 127.0.0.1
--

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;

--
-- Table structure for table 'admin'
--

CREATE TABLE admin (
  Username varchar(35) NOT NULL default '',
  Password char(32) binary NOT NULL default '',
  PRIMARY KEY  (Username)
) TYPE=MyISAM;

--
-- Data for table 'admin'
--


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

--
-- Table structure for table 'users'
--

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`)
) TYPE=MyISAM;

--
-- Data for table 'users'
--
# service mysqld start
# mysql -h 127.0.0.1 -uroot -p < pureftp.sql      //如果你的MySQL没有设置密码,可以省略参数
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql> flush privileges;
mysql> quit
  • 3.修改pureadmin的配置文件,修改数据库的相关参数:
# vim /var/www/html/pureadmin/config.php
3 $cfg['dbname']='ftpusers';                     //mysql db name
4 $cfg['dbuser']='ftp';                               //mysql user
5 $cfg['dbpasswd']='tmppasswd';           //mysql password
10 $cfg['passwdtype']='MD5';
14 $cfg['dir']='/data/resources/ftpdata/'; //dir
  • 4.配置pureftpd-mysql.conf连接数据库文件:
# cp /usr/local/src/pure-ftpd-1.0.36/pureftpd-mysql.conf /usr/local/pureftpd/etc/
# vim /usr/local/pureftpd/etc/pureftpd-mysql.conf
12 # MYSQLServer     127.0.0.1
17 # MYSQLPort       3306
22 MYSQLSocket     /tmp/mysql.sock
27 MYSQLUser       ftp
32 MYSQLPassword   tmppasswd
37 MYSQLDatabase   ftpusers
45 MYSQLCrypt      md5

3.浏览器登录测试

http://192.168.1.224/pureadmin (用户名:admin,密码:123456)

登录界面

登录后的管理界面

管理界面
image.png

添加用户时,使用默认UID、GID和目录,则用户登录后是在自己的家目录下。
如果想要创建的用户看到的是公共目录,则修改用户的UID和GIID必须和上面virtualftp系统用户的UID、GID对应,并且目录为pureftpd的共享目录(/data/resources/ftpdata/)

用此工具添加的用户和用pure-pw添加的虚拟用户不在一个列表里。

pureftpd用户

  • 虚拟用户

    • 1.查看虚拟用户列表:
      # pure-pw list -f /usr/local/pureftpd/etc/pureftpd.passwd
    • 2.创建虚拟用户
      # pure-pw useradd user2 -u virtualftp -g virtualftp -d /data/resources/ftpdata/ -m
      -u -g指定虚拟用户对应的系统用户的UID和GID;-d指定虚拟用户的家目录 -m刷新虚拟用户列表
    • 3.查看虚拟用户的详细信息
      pure-pw show user2
  • mysql验证用户

    • 1.查看MySQL验证用户信息
      mysql> select * from ftpusers.users;

如果启用了iptables

  • 1.修改配置文件中的这一行:
# vi /usr/local/pureftpd/etc/pure-ftpd.conf
PassivePortRange          30000 50000
  • 2.iptables开启相关端口:
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 30000:50000 -j ACCEPT
/etc/rc.d/init.d/iptables save

文章转载至壹聚教程
报错参考
pureadmin及设置MySQL数据库文件:感谢开源易有
的无私贡献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容