当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪linux下用Proftpd搭建ftp服务器及配置方法       首先proftpd是一个开源软件,其官方地址是http://www.proftpd.org,目前最高版本是:1.3.1(非稳定版),稳定的版本是1.3.0,下载文件为proftpd-1.3.0a.tar.gz   我下载的是1.3.0,上传到服务器上后按照.........
    ▪PureFTPd+Mysql+PHP_Manager实现虚拟用户磁盘限额的配置方法       在安装PureFTPd以前,要做好以下准备工作: 1. 安装FreeBSD4.9系统。 2. 定制内核,在内核中加入“options QUOTA”以实现用户配额的支持(注:其他*nix系统如何实现,请各位自己搜索实现。) 3. .........
    ▪LNMP下FTP服务器的安装与使用方法(Pureftpd和Proftpd)       一、Proftpd在LNMP 1.0中增加了Proftpd服务器安装脚本,proftpd可以通过配置文件对权限进行更多的设置。Proftpd可以单独安装,不需要其他如MySQL的支持,完全使用配置文件进行设置。安装进入lnmp1.........

[1]linux下用Proftpd搭建ftp服务器及配置方法
    来源: 互联网  发布时间: 2013-12-24

首先proftpd是一个开源软件,其官方地址是http://www.proftpd.org,目前最高版本是:1.3.1(非稳定版),稳定的版本是1.3.0,下载文件为proftpd-1.3.0a.tar.gz

  我下载的是1.3.0,上传到服务器上后按照常规的方法安装即可。

  tar -zxvf proftpd-1.3.0a.tar.gz
  cd proftpd*
  ./configure --prefix=/usr/local/proftpd
  make
  make install

  安装完成!接下来是配置。

  设置一:随机启动服务,sbin/proftpd文件复制到/etc/rc.d/rc.local文件夹中,以实现开机自动启动。
  设置二:配置文件在etc/proftpd.conf,配置文件说明如下:

  ServerName "ProFTPD Default Installation"
  ServerType standalone
  DefaultServer on

  分别表示:服务器名称,服务类型和默认服务状态!
  后面的服务端口啊什么的我就省去不说了,说最关键的权限控制部分。

  # Set the user and group under which the server will run.
  User nobody
  Group nogroup

  注意看上面:以什么用户和什么组来运行服务。

  更改为你现有的组和用户,这里为了管理上的方便和安全性上考虑,建议新建一个ftp组和ftp用户。
  # To cause every FTP user to be "jailed" (chrooted) into their home
  # directory, uncomment this line.
  #DefaultRoot ~
  是否允许用户进入用户的主目录,注意:可是适用/home替代
  # Normally, we want files to be overwriteable.
  AllowOverwrite on
  是否具有重写的权利
  # A basic anonymous configuration, no upload directories. If you do not
  # want anonymous users, simply delete this entire section.
  User ftp
  Group ftp
  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias anonymous ftp
  # Limit the maximum number of anonymous logins
  MaxClients 10
  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin welcome.msg
  DisplayFirstChdir .message
  # Limit WRITE everywhere in the anonymous chroot
  DenyAll

  这部分是匿名用户的定义其实也很简单。

  启动不了,出现如下错误的解决方法

  [root@new-host sbin]# ./proftpd
  - IPv4 getaddrinfo 'new-host' error: Name or service not known
  - warning: unable to determine IP address of 'new-host'
  - error: no valid servers configured
  - Fatal: error processing configuration file '/usr/local/proftpd/etc/proftpd.conf'

  原因是无法绑定Ip地址。

  在配置文件中增加下面这句:

  DefaultAddress 192.168.8.105

  再重启服务就可以了!

  接上!原来以为这样就完事了,
可是看看才知道如果我要新增加一个FTP用户的话实际上是很麻烦的一件事,因为帐号是直接跟系统帐号想关联的,不安全也不好操作,我们的目的是要做成像虚拟主机服务提供商那样的ftp!

  接下去,需要一个模块的支持到http://www.castaglia.org/proftpd/#Modules去看看proftpd-mod-quotatab模块,注意下面这句话:

  NOTE: mod_quotatab became part of the offical ProFTPD source distribution in 1.2.10rc1. If using a version of ProFTPD later than that, please use the mod_quotatab already included, as it will be most up-to-date.

  表示我们下载的1.3版本已经支持做了这个东西,主要编译安装的时候把mod_quotatab 开起来就可以了,于是重新编译!

  前提:确认你已经安装并且能够正常运行mysql,否则后面的工作都是没有意义的了!

  重新编译:

  ./configure --prefix=/usr/local/proftpd --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql --with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql

  注意请根据自己的Linux系统找到MySQL的相应include和lib目录,以上例子中的相关路径是大多数Linux系统默认的,如果你的MySQL是通过源码编译安装的,则这两个目录一般在安装路径下。

  有资料说:需要修改contrib目录中mod_sql_mysql.c文件:

  vi mod_sql_mysql.c

  找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如/usr/include/mysql/mysql.h
  可是我没有这样做也可以,真奇怪!

  然后make
  make install

  一样的切换到proftpd文件夹中操作,后面的比较复杂,我试试以大学教授的水平用简单的语言讲。
配置proftpd.conf文件

  编辑/usr/local/proftpd/etc/proftpd.conf文件:
  设置磁盘限额
  #设置磁盘限额
  QuotaDirectoryTally on
  #设置磁盘容量显示时的单位
  QuotaDisplayUnits "Kb"
  #打开磁盘限额引擎
  QuotaEngine on
  #设置磁盘限额日志文件
  QuotaLog "/usr/local/proftpd/var/quota"
  #允许显示磁盘限额信息,ftp登录后可执行quote site quota命令查看当前磁盘使用情况
  QuotaShowQuotas on
  指定磁盘限额模块使用的数据库信息
  在proftpd.conf文件中加入以下配置:
  SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, \
  bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits \
  WHERE name = '%{0}' AND quota_type = '%{1}'"
  SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, \
  bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \
  WHERE name = '%{0}' AND quota_type = '%{1}'"
  SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, \
  bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, \
  files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, \
  files_xfer_used = files_xfer_used + %{5} \
  WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
  SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
  QuotaLimitTable sql:/get-quota-limit
  QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

  很多朋友就要问了:这些是什么东东啊?完全看不懂!我也不懂!继续照做就是了~~

  配置FTP用户为MySQL数据库认证方式

  在proftpd.conf文件中加上以下配置:
  SQLConnectInfo databaseName@hostName:port userName password
  #databaseName是为proftpd建立的MySQL数据库的名字
  #hostName是MySQL数据库所在的服务器的名字或ip地址
  #port是MySQL服务所使用的端口
  #userName是数据库的用户名
  #password是数据库用户密码
  SQLAuthTypes Backend Plaintext
  #Backend表示用户认证方式为MySQL数据库的认证方式
  #Plaintext表示明文认证方式,排在最前面的为最先使用的方式
  SQLUserInfo ftpUser userid passwd uid gid homedir shell
  #指定ftp用户数据表的名字和其中的字段名,表名可自行定义,字段名不要改动。
  SQLGroupInfo ftpGroup groupname gid members
  #指定ftp用户组数据表的名字和其中的字段名,这个数据表是可选的,字段名不要改动。
  RequireValidShell off
  #指定是否必须为FTP用户指定一个系统shell,off表示不用指定,on表示必须指定。为了系统安全应该指定为off。
  SQLAuthenticate users groups usersetfast groupsetfast
  #校验数据表
  SQLHomedirOnDemand on
  #如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录
创建FTP系统用户和组
  创建一个FTP用户和组,以后所有的其它FTP用户实际上都是通过这个系统用户进行FTP的:
  groupadd –g 2003 ftpGroup
  useradd –u 2003 –g ftpGroup –d /home ftpUser
  以上建立了一个名为ftpGroup的ftp组,组id为2003;建立了一个ftp用户,用户id为2003,并加入ftpGroup组,用户主目录为/home
  接着修改/home的属主和访问权限:
  chown –R ftpUser.ftpGroup /home
  chmod 644 /home
  644的具体含义请自查看相关文档。
  再修改proftpd.conf文件,找到User 和 Group,将User指定为ftpUser,Group指定为ftpGroup,替换掉原默认值,否则如果系统中没有原默认值所指定的用户和组的话,proftpd是不能成功启动的。

  建立FTP用户认证相关表
  mysql –u root
  use mysql

  添加一个mysql用户:ftp
  添加一个数据库:proftpd
  具体指令请参考MYSQL手册。
  建完用户和数据库后,以新建的用户登录MYSQL:

  mysql –u ftp
  use proftpd;
  create table ftpUser (userid TEXT NOT NULL,passwd TEXT NOT NULL,uid INT NOT NULL,gid INT NOT NULL,homedir TEXT,shell TEXT);
  userid是用户名,passwd是用户密码,uid是用户id,gid是用户所在组的id,homedir是用户主目录,shell是用户的系统shell。
  create table ftpGroup (groupname TEXT NOT NULL,gid SMALLINT NOT NULL,members TEXT NOT NULL);
  groupname是组名,gid是组id,members是组的成员,有多个成员时,要用逗号隔开。
  以上建立了FTP用户和用户组的数据表。
  建立磁盘限额数据表
  CREATE TABLE quotalimits (
  name VARCHAR(30),
  quota_type ENUM("user", "group", "class", "all") NOT NULL,
  per_session ENUM("false", "true") NOT NULL,
  limit_type ENUM("soft", "hard") NOT NULL,
  bytes_in_avail FLOAT NOT NULL,
  bytes_out_avail FLOAT NOT NULL,
  bytes_xfer_avail FLOAT NOT NULL,
  files_in_avail INT UNSIGNED NOT NULL,
  files_out_avail INT UNSIGNED NOT NULL,
  files_xfer_avail INT UNSIGNED NOT NULL
  );
  CREATE TABLE quotatallies (
  name VARCHAR(30) NOT NULL,
  quota_type ENUM("user", "group", "class", "all") NOT NULL,
  bytes_in_used FLOAT NOT NULL,
  bytes_out_used FLOAT NOT NULL,
  bytes_xfer_used FLOAT NOT NULL,
  files_in_used INT UNSIGNED NOT NULL,
  files_out_used INT UNSIGNED NOT NULL,
  files_xfer_used INT UNSIGNED NOT NULL
  );

  以上quotalimits表是FTP用户的磁盘限额配置信息,quotatallies表存放的是用户磁盘限额变动的信息。
  quotatallies表不需要作修改,由程序自动记录
  下面是quotalimits 表中各字段的含意:
  quota_type 磁盘限额的鉴别
  bytes_in_avail 上传最大字节数,就是FTP用户空间容量
  bytes_out_avail 下载最大字节数
  bytes_xfer_avail 总共可传输的文件的最大字节数(上传和下载流量)
  files_in_avail 总共能上传文件的数目
  files_out_avail 能从服务器上下载文件的总数目
  files_xfer_avail 总共可传输文件的数目(上传和下载)

  数据表数据初始化

  表全部建完后,就可以创建FTP用户了,在ftpUser表中插入一条记录如下:
  INSERT INTO ftpUser (userid, passwd, uid, gid, homedir, shell) values ('shine', password(‘yourpassword'), '2003', '2003', '/home/shine', '' );
  以上建立了一个新的FTP用户,用户名为shine,密码为yourpassword,可以看到密码用mysql的系统函数password进行了加密,用户id和组id均为2003,这里随便填,我填了和系统用户ftpUser和系统组ftpGroup相同的id,不知道会不会有问题。/home/shine为用户主目录,用户shell为空。

  如果要想应用到更多的功能,且建立了组的数据表,你也要为此添加记录,不过一定要注意在members的字段多个成员一定要用逗号隔开。

  INSERT INTO ftpGroup VALUES ('ftpGroup', 2003, 'ftpUser');
  下面再来建立初始的用户磁盘限额信息:
  将已经建立的shine帐号赋予50M空间,最多能上传500个文件,文件传输流量为512k,总共只能传输2000个文件,插入记录如下:
  INSERT INTO quotalimits (name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail)VALUES (‘shine', ‘user', ‘true', ‘soft', ‘51200000', ‘0','512000',‘500','0','2000');
  运行proftpd
  执行以下命令启动proftpd服务:
  /usr/local/proftpd/sbin/proftpd
  开一个控制台输入:
  ftp ftpHostName
  输入用户名:shine
  输入用户密码:yourpassword
  成功登录后执行:
  quote site quota
  可以看到此用户的磁盘使用情况。


    
[2]PureFTPd+Mysql+PHP_Manager实现虚拟用户磁盘限额的配置方法
    来源: 互联网  发布时间: 2013-12-24
在安装PureFTPd以前,要做好以下准备工作:
1. 安装FreeBSD4.9系统。
2. 定制内核,在内核中加入“options QUOTA”以实现用户配额的支持(注:其他*nix系统如何实现,请各位自己搜索实现。)
3. 安装好APACHE+PHP平台,因为我们后面要用PHP_Manager实现用户在线管理。(注:关于这个安装的内容网上有很多教程,在FreeBSD下可以直接用PORTS方式安装就可以了。)
做好以上准备工作之后,我们就可以开始进入真正的安装过程了。
(注:以下安装全部采用PORTS方式安装)
一、 安装Mysql
我安装的Mysql是4.0版本的,所以如果有最新大家也可以尝试啊。

# cd /usr/ports/databases/mysql40-server
# make install clean

安装完后产生启动脚本在 /usr/local/etc/rc.d/mysql-server.sh

你可以运行以下命令,看Mysql服务是否已经启动。

# ls | grep mysql

如果有返回信息,就表示Mysql已经启动了,如果没有启动,运行以下命令。

# cd /usr/local/etc/rc.d
# ./mysql-server.sh start

如果你要停止Mysql服务。

# /usr/local/etc/rc.d/mysql-server.sh stop

确认服务启动后,我们来测试数据库运行是否正常:
(注:默认情况下Mysql的用户是root,密码为空,所以请立即登录Mysql修改root用户的密码)

# mysql

出现下面内容表示运行正常。

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16 to server version: 4.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
输入exit退出Mysql。

为Mysql的root用户设置一个口令123456

# mysqladmin -u root password ‘123456'

设置完后我们再来测试一下密码是否生效了。

# mysql -u root -p
Enter password:

出现提示密码,输入正确密码并回车。
如果出现以下内容,表示设置成功。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16 to server version: 4.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

如果出现以下内容,表示设置失败。(如果这样,你就惨了,哈哈)

ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)


二、 安装PureFTPd
1.下面我们开始安装PureFTPd,同样以FreeBSD的Ports方式安装。

# cd /usr/ports/ftp/pure-ftpd
# make WITH_MYSQL=1 \ MYSQL数据库支持
WITH_LANG=simplified-chinese \ 提示文字为简体中文
CONFIGURE_ARGS= \
' --prefix=/usr/local/pureftpd \ 安装目录
--with-paranoidmsg \ //唔....不知该怎么说.算是可以给特定人的信息吧.
--with-welcomemsg \ //支持登录后的信息显示,我反正搞不定,哈哈
--with-uploadscript \ //当一个文件被完整上传完后自动呼叫某一script去对这个文件
处理.当然.这个script得你自己写.
--with-largefile \ //支持下载超过2G的文件.
--with-cookie \ //使用者进站看到的东东.类似进站画面.
--with-virtualchroot \ //安全的chroot.
--with-virtualhosts \ //跟http的virtualhost有异曲同工之妙.
--with-virtualroot \ //虚拟root支持
--with-diraliases \ //跟Serv-U上面的link功能一样.
--with-quotas \ // 使用quota.(非系统下的quota)
--with-sysquotas \ //允许使用操作系统的Quota(磁盘限额)
--with-ratios \ //上下传比率支持.
--with-ftpwho \ //使用pure-ftpwho命令查看线上用户.
--with-everything \ // 所有功能全上.(自己看着办吧)
--with-throttling' \ //频宽可设限.
install clean


安装完后,就会在/usr/local目录下生成一个pureftpd目录,我们要使用的文件都在这个目录中。

2.下面我们开始配置pure-ftpd.conf文件
在这里我全使用默认值,只修改下面内容以支持MYSQL。(注:Pureftpd可以同时支持ldap,mysql,pgsql,puredb认证)

# MySQL configuration file (see README.MySQL)
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf

3.配置文件详解(摘自网上陈景峰所著《Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To》)
ChrootEveryone yes
chroot每一个用户,等同于Proftpd 中的DefaultRoot~ , 可以限制用户在某个地方活动,增强服务器的安全性。使用过wu-ftpd的使用都应该知道cd /会发生什么!
TrustedGID 50
#以上两者要一起用
BrokenClientsCompatibility no
MaxClientsNumber 50
#最大链接数
Daemonize yes
#Fork in background 以守护进程方式在后台运行
MaxClientsPerIP 5
#每个ip最多链接数,最好设小点。
VerboseLog no
#是否要把所有client端的指令都log下来
DisplayDotFiles no
#显示开头的文件
AnonymousOnly no
#是否只让匿名登录
NoAnonymous no
#不开放匿名登入
SyslogFacility ftp
#应该是对日志做一下过滤 (auth, authpriv, daemon, ftp, security, user, local*)可以让日志只记录想要的信息
DontResolve yes
#不反向解释客户端的ip
MaxIdleTime 5
#最大闲置時間
#LDAPConfigFile /usr/local/pureftpd/etc/pureftpd-ldap.conf
#使用LDAP认证,
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
#使用MySQL认证
#PGSQLConfigFile /usr/local/pureftpd/etc/pureftpd-pgsql.conf
#使用PGSQL认证
#PureDB /ftp/etc/pureftpd.pdb
#使用者资料的DB存放地点 [由于我是用PureFTPD的內建DB.固有此选项]
#ExtAuth /var/run/ftpd.sock
#pure-authd socket 路径 (详细请看 README.Authentication-Modules)
#PAMAuthentication yes
#开启PAM认证
#UnixAuthentication yes
#如果你想要有简单的Unix(/etc/passwd)的认证的話
FortunesFile /usr/local/pureftpd/etc/.welcome
#显示的欢迎信息文件,你可以创建该文件,输入一些文字,然后你重启你的FTP服务,就会有意外的发现。
LimitRecursion 2000 8
#ls最多列出3000个文件.最深8层
AnonymousCanCreateDirs no
#匿名用户可以创建目录
MaxLoad 4
#当system load超过4時.使用者将不能再下载
PassivePortRange 30000 50000
#被动连接应答范围
ForcePassiveIP 192.168.0.1
#不会译:(
AnonymousRatio 1 10
#Anonymous连接上传/下载比率
UserRatio 1 10
#用户上传/下载比率(注:如果使用ldap,mysql,pgsql,pam不要启用该功能,否则你在ldap等中设置的Ratio无校)
AntiWarez no
#上传的文件不能被下载(owner is ftp).等到local admin确认
Bind 127.0.0.1,8021
#要绑定和ip/port,在你的系统中有两个FTP Server这样你其中一个FTP就要使用其它端口。
#格式-> 127.0.0.1,21 如果只写port表All ip,port
AnonymousBandwidth 8
#Anonymous 带宽,单位KB/s
UserBandwidth 8
#用户带宽,单位KB/s
Umask 133:022
#上传文件的Umask.(<umask for files>:<umask for dirs> )
MinUID 1000
# UID至少多少才能登录
AllowUserFXP yes
#支不支持FXP
AllowAnonymousFXP no
#Anonymous支不支持FXP
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
#(”.”)开头的文件能不能被读/写,UNIX Like下以点开头的文件是隐藏文件ls –a才能列出
#Pureftpd Quota模式下做产生” .ftpquota”文件。
AutoRename no
#上传文件若有相同文件名自动改名(file.1,file.2...)
AnonymousCantUpload no
#匿名用户上传文件
TrustedIP 10.1.1.1
#锁IP.
LogPID
#Log文件添加PID
AltLog stats:/ftp/etc/log/pureftpd.log
#log存放地点,注日志有几种常用的格式
#clf 类似apache格式,stats UNIX log格式,w3c 标准W3C格式,可能是HTML格式
NoChmod yes
#不给Chmod指令的权限
KeepAllFiles no
#使用者可续传.但不可刪除文件
CreateHomeDir yes
#如果user的home不存在自动建立(我把这个设为YES)
Quota 1000:10
#Quota <文件数>:<容量Megabytes >,FTP限制10M空间,可以上传1000个文件(注:如果使用ldap,mysql,pgsql,pam不要启用该功能,否则你在ldap等中设置的Quota无校)
PIDFile /ftp/etc/log/pure-ftpd.pid
#记录pure-ftpd的PID文件
CallUploadScript yes
#呼叫UploadScript
MaxDiskUsage 99
#当硬盘使用率到多少時将停止上传
NoRename yes
#用户不能重命名文件名
CustomerProof yes
PerUserLimits 3:20
#<每个账号最多可登入几次:Anonymous最多可同時登入几次>

4. 创建Mysql数据库中的FTP虚拟用户管理数据库ftpusers
将以下内容存为script.mysql文件

INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update
_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Proces
s_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES
('127.0.0.1','ftp',PASSWORD('123456'),'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 ('Administrator',MD5('123456'));

CREATE TABLE users (
User char(16) NOT NULL default '',
Password char(32) binary NOT NULL default '',
Uid int(11) NOT NULL default '2000',
Gid int(11) NOT NULL default '2000',
Dir char(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',
status enum('0','1') NOT NULL default '1',
ipaccess varchar(15) NOT NULL default '*',
comment tinytext NOT NULL,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;

INSERT INTO `users` VALUES ('kevin',MD5('123456'),1001,2000,'/home/kevin',500,30,
80,5);

先在Mysql数据库建立一个对数据库有操作权限的用户ftp,密码为123456。
再创建新数据库ftpusers,并新建两个表admin和users,往admin表中加入管理用户帐号,往users表中加入新的FTP用户kevin,密码为123456。

然后我们运行以下命令来生成数据库ftpusers。

# mysql -u root -ppassword < script.mysql
注意,-p是输入密码,它和后面你输入的password中没有空格。

5.修改/usr/local/pureftpd/etc/pureftpd-mysql.conf配置文件
内容如下所示:

MYSQLServer 127.0.0.1
#MYSQL服务器的IP
MYSQLPort 3306
#MYSQL 端口号
MYSQLSocket /var/lib/mysql/mysql.sock
#使用UNIX.sock本地连接
注:MYSQLServer 与 MYSQLSocket 选择一种即可

MYSQLUser ftp
#MYSQLUser 数据用户名
MYSQLPassword 123456
#MYSQL数据库用户的密码
MYSQLDatabase ftpusers
#FTP数据数据库
MYSQLCrypt md5
#密码加密方式"cleartext", "crypt", "md5" and "password"
# cleartext 明文,crypt,md5,password是Backend password(‘your-passwd')函数(MYSQL数据库所使用的password()函数)
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
# 密码字段,我使用users表中的Password做为密码字段
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
#UID用户ID字段
MYSQLDefaultUID 1000
#默认的UID (注:如何开启该选项,MYSQLGetUID将失去作用)
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
#GID组ID字段
MYSQLDefaultGID 1000
#默认的GID (注:如何开启该选项,MYSQLGetGID将失去作用)
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
#FTP用户目录如/home/web/www-9812-net
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L"
#磁盘限额,文件数限制。如1000,允许用户上传1千个文件
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L"
#磁盘限额,FTP用户空间限制(单位为M),如:100M
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L"
#上传/下载比率。MySQLGetRatioUL为上传比,MySQLGetRatioDL下载比。如:1:5
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
#下传/下载带宽(单位KB/s)。MySQLGetBandwidthUL上传带宽,MySQLGetBandwidthDL下载带宽。如上传500KB/s,下载50KB/s
MySQLForceTildeExpansion 1
MySQLTransactions On
#不会翻译


修改好该配置文件后,我们继续。

6.运行PureFTPd
为了实现匿名登录,需要在系统中加一个ftp用户。

有了ftp.理所当然得也要有账号才行.
#vipw
ftp:*:2000:2000::0:0:ftp:/home/ftp:
/sbin/nologin
#vi /etc/group
ftpusers:*:2000:

操作完后我们就添加一个ftp帐号属于ftpusers组,用户id和组id都是2000

启动PureFTPd
# /usr/local/pureftpd/bin/pure-config.pl ../etc/pure-ftpd.conf

为了以后方便的进行Ftp服务的管理,我自己在/usr/local/etc/rc.d中新建了一个pureftpd.sh文件。

# vi pureftpd.sh

#!/bin/sh

case "$1" in
start)
[ -x /usr/local/pureftpd/etc/pure-ftpd.conf ] && \
/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.c
onf > /dev/null && \
echo -n ' pure-ftp'


stop)
killall pure-ftpd > /dev/null && \
echo -n ' pure-ftp'


*)
echo "Usage: `basename $0` {start | stop}" >&2

esac

exit 0

设置该文件的可执行权限

# chmod u+x pureftpd.sh

以后可以用下列命令启动PureFTPd服务

# /usr/local/etc/rc.d/pureftpd.sh start

用下列命令停止PureFTPd服务

# /usr/local/etc/rc.d/pureftpd.sh stop

测试FTP是否正常了。
# ftp 你的IP
Connected to 127.0.0.1.
220---------- 欢迎来到 Pure-FTPd ----------
220-您是第1个使用者,最多可达50个连接
220-现在是本地时间 09:02。服务器端口: 21。
220 在15分钟内没有活动,您将被断线。
Name (127.0.0.1:kevin):kevin
Password:
230-使用者kevin 有以下组的权限: ftpusers
230-这个服务器支持FXP传输
230-OK. 目前限制的目录是 /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

恭喜你,你的FTP服务已经正常工作了。

三、 使用PHP_Manager进行用户管理

下载最新的PHP_Manager软件

# tar zxvf ftp_v1.3.1.tar.gz
# mv ftp_v1.3.1 /www/path/data/ftp
# cd /www/path/data/ftp
# vi config.php
修改config.php配置文件

$LANG = $ZH_CN; //你的PHP_Manager所用的语言
$DBHost = “localhost”; //你的Mysql服务器的Host
$DBLogin = “ftp”; //登录数据库的用户
$DBPassword = “123456”; //登录数据库的用户密码
$DBDatabase = “ftpusers”; //实现虚拟用户管理的数据库的名字
$FTPAddress = “61.132.35.21:21”; //你的FTP服务的IP地址和端口号

然后使用网页方式登录管理。

http://你的服务器域名/ftp

管理员是administrator,密码是123456,这在前面建数据库的时候可以修改的。
进入之后全是中文,不要我多写了吧。
祝大家快乐!

我已经把PHP_Manager修改为支持中文的了,现传上来给大家用。

http://www.linuxsir.org/bbs/attachment.php?s=&postid=578136

有关其他系统下的安装方法,可以参照陈景峰所著《Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To》

    
[3]LNMP下FTP服务器的安装与使用方法(Pureftpd和Proftpd)
    来源: 互联网  发布时间: 2013-12-24

一、Proftpd在LNMP 1.0中增加了Proftpd服务器安装脚本,proftpd可以通过配置文件对权限进行更多的设置。
Proftpd可以单独安装,不需要其他如MySQL的支持,完全使用配置文件进行设置。

安装进入lnmp1.0解压后的目录,执行:./proftpd.sh



提示“Press any key to start install ProFTPd... ”后回车确认就会自动安装Proftpd

添加FTP用户执行:root/proftpd_vhost.sh
提示“Please input a username:” 后输入要添加飞FTP用户名,回车确认。
之后会提示“Please set password for 前面你设的用户名:” 输入你要设置的密码
回车确认后后会提示“Please input full path:”,这里需要输入FTP用户设置到哪个目录,需要是绝对路径,输入完回车确认,提示“Press any key to start create ProFTPd virtul host...”后再次回车确认FTP用户就会添加上。
二、PureftpdLNMP一键安装包里的Pureftpd安装脚本是需要MySQL支持的,安装前需要已经安装好LNMP,这个自带一个PHP编写的用户管理界面。

安装进入lnmp1.0解压后的目录,执行:./pureftpd.sh 会显示如下图:



按提示输入当前MySQL的root密码,输入完成,回车确认,会提示如下信息:



这一步是设置FTP用户管理后台的登陆密码。输入完成回车确认



因为PHP管理后台需要连接数据库,所以会在MySQL上创建一个ftp用户,这里设置的就是这个用户的密码。输入完成,回车确认。

回车 显示 ”Press any key to start install Pure-FTPd...“ 再次回车确认即可开始安装。

如果使用的是MySQL 5.5,如果不能确定版本执行:/usr/local/mysql/bin/mysql -V 就会显示,前面安装完后需要按http://lnmp.org/faq/fix-pureftpd-bug-mysql-55.html 修复才可以。

添加用户安装完成后,在浏览器输入: http://你的ip/ftp/ 用刚才设置的FTP用户管理后台的登陆密码登陆。登陆后界面如下:



添加一个用户名到你要添加的目录。

uid,gid 都选www。

注:有用户可能找不到选择目录的地方,选目录是点击”主目录“ 最后面有个圆形套着三角形的图标,点一下就会出来。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3