Proftpd安装手册(Ubuntu)

运维 系统运维
Proftpd安装手册:ProFTPD目标是实现一个安全且易于设定的FTP Server,Proftpd不仅针对Wu-Ftp改进了许多问题,而且还有许多新的功能。那么Proftpd的配置文件是怎样的呢?本文将一一简述。Proftpd安装手册:

  操作系统版本:Ubuntu8.10server(intrepid)

  linux核心:2.6.27-7-server

  MySQL 在安装操作系统时已经选择安装(或者安装完系统后进行在线安装:apt-get install mysql-server mysql-client)

  一、安装proftpd

       这里安装的是1.3.2(解决中文字符显示问题)

  编译安装步骤如下:

  1、切换到用户本地源目录:cd /usr/local/src

  2、下载源文件:wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2.tar.gz

  3、解压:tar -zxvf proftpd-1.3.2.tar.gz

  4、安装gcc编译套件:apt-get install build-essential

  5、安装更新gcc:apt-get install gcc

  6

  1. 、./configure --enable-shadow --enable-autoshadow --enable-dso --enable-nls --with-modules=mod_ifsession:mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql  
  2.  
  3.   --with-includes=/usr/include/mysql --with-libraries=/usr/lib/  
  4.  
  5.   (--with-includes=MySQL服务器includes所在的位置,用到mysql.h;  
  6.  
  7.   --with-libraries=MySQL服务器libraries所在的位置,用到libmysqlclient.a)  
  8.  

  7、make

  8、make install

  9、make clean(重新编译用,***次跳过,重复6-8步骤)

  10、制作开机启动脚本:vi /etc/init.d/proftpd

  粘贴如下代码:

  1.   #!/bin/sh  
  2.  
  3.   # ProFTPD files  
  4.  
  5.   FTPD_BIN=/usr/local/sbin/proftpd  
  6.  
  7.   FTPD_CONF=/usr/local/etc/proftpd.conf  
  8.  
  9.   PIDFILE=/usr/local/var/proftpd.pid  
  10.  
  11.   # If PIDFILE exists, does it point to a proftpd process?  
  12.  
  13.   if [ -f $PIDFILE ]; then  
  14.  
  15.   pid=`cat $PIDFILE`  
  16.  
  17.   fi  
  18.  
  19.   if [ ! -x $FTPD_BIN ]; then  
  20.  
  21.   echo "$0: $FTPD_BIN: cannot execute"  
  22.  
  23.   exit 1  
  24.  
  25.   fi  
  26.  
  27.   case $1 in  
  28.  
  29.   start)  
  30.  
  31.   if [ -n "$pid" ]; then  
  32.  
  33.   echo "$0: proftpd [PID $pid] already running"  
  34.  
  35.   exit  
  36.  
  37.   fi  
  38.  
  39.   if [ -r $FTPD_CONF ]; then  
  40.  
  41.   echo "Starting proftpd..."  
  42.  
  43.   $FTPD_BIN -c $FTPD_CONF  
  44.  
  45.   else  
  46.  
  47.   echo "$0: cannot start proftpd -- $FTPD_CONF missing"  
  48.  
  49.   fi  
  50.  
  51.   ;;  
  52.  
  53.   stop)  
  54.  
  55.   if [ -n "$pid" ]; then  
  56.  
  57.   echo "Stopping proftpd..."  
  58.  
  59.   kill -TERM $pid  
  60.  
  61.   else  
  62.  
  63.   echo "$0: proftpd not running"  
  64.  
  65.   exit 1  
  66.  
  67.   fi  
  68.  
  69.   ;;  
  70.  
  71.   restart)  
  72.  
  73.   if [ -n "$pid" ]; then  
  74.  
  75.   echo "Rehashing proftpd configuration"  
  76.  
  77.   kill -HUP $pid  
  78.  
  79.   else  
  80.  
  81.   echo "$0: proftpd not running"  
  82.  
  83.   exit 1  
  84.  
  85.   fi  
  86.  
  87.   ;;  
  88.  
  89.   *)  
  90.  
  91.   echo "usage: $0 {start|stop|restart}"  
  92.  
  93.   exit 1  
  94.  
  95.   ;;  
  96.  
  97.   esac  
  98.  
  99.   exit 0  
  100.  

  11、给proftpd设置非root用户的可执行权限:chmod +x proftpd

  12、安装启动服务管理程序:apt-get install sysv-rc-conf

  13、sysv-rc-conf设置proftpd开机自启动

#p#

  二、配置proftpd.conf文件

  1、客户端支持GBK编码:UseEncoding UTF-8 GBK

  2、加快登陆速度:IdentLookups off

  UseReverseDNS off

  3、定义登录欢迎消息文件:

  DisplayLogin /usr/local/etc/ftplogin.msg

  4、权限控制:(未解决中文登录名权限控制)

  5、MySQL验证:

  1.   #-------- load sql.mod for mysql authoritative --------#  
  2.  
  3.   #配置FTP用户为MySQL数据库认证方式  
  4.  
  5.   #SQLConnectInfo databaseName@hostName:port userName password 
  6.  
  7.   SQLConnectInfo proftpd@localhost ftpuser 123456  
  8.  
  9.   #Backend表示用户认证方式为MySQL数据库的认证方式  
  10.  
  11.   #Plaintext表示明文认证方式,排在最前面的为***使用的方式  
  12.  
  13.   SQLAuthTypes Backend Plaintext  
  14.  
  15.   #校验数据表  
  16.  
  17.   #SQLAuthenticate users groups usersetfast groupsetfast  
  18.  
  19.   SQLAuthenticate users  
  20.  
  21.   #指定ftp用户数据表的名字和其中的字段名,表名可自行定义,字段名不要改动。  
  22.  
  23.   SQLUserInfo ftpusers userid passwd uid gid homedir shell  
  24.  
  25.   #指定ftp用户组数据表的名字和其中的字段名,这个数据表是可选的,字段名不要改动。  
  26.  
  27.   #SQLGroupInfo ftpGroup groupname gid members  
  28.  
  29.   #指定是否必须为FTP用户指定一个系统shell,off表示不用指定,on表示必须指定。为了系统安全应该指定为off。  
  30.  
  31.   RequireValidShell off 
  32.  
  33.   #如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录  
  34.  
  35.   #SQLHomedirOnDemand on 
  36.  
  37.   SQLNegativeCache on 
  38.  
  39.   SQLLogFile /var/log/proftpd.sql.log  
  40.  
  41.   #用户登录欢迎窗口中显示登录用户已访问次数  
  42.  
  43.   SQLNamedQuery getlogins SELECT "login_counts from ftpusers where userid='%u'" 
  44.  
  45.   SQLNamedQuery updatelogins UPDATE "login_counts=login_counts+1 WHERE userid='%u'" ftpusers  
  46.  
  47.   SQLShowInfo PASS "230" "You've logged on %{getlogins} times!" 
  48.  
  49.   SQLLog PASS updatelogins  
  50.  
  51.   #-------- load sql.mod for mysql authoritative --------#  
  52.  

  6、磁盘配额:

  1.   #-------- load qudes.mod for Quota limit --------#  
  2.  
  3.   #打开磁盘限额引擎  
  4.  
  5.   QuotaEngine on 
  6.  
  7.   #设置磁盘限额  
  8.  
  9.   QuotaDirectoryTally on 
  10.  
  11.   #设置磁盘容量显示时的单位  
  12.  
  13.   QuotaDisplayUnits Mb  
  14.  
  15.   #设置磁盘限额日志文件  
  16.  
  17.   QuotaLog "/var/log/proftpd.quota.log" 
  18.  
  19.   #允许显示磁盘限额信息,ftp登录后可执行quote site quota命令查看当前磁盘使用情况  
  20.  
  21.   QuotaShowQuotas on 
  22.  
  23.   #指定磁盘限额模块使用的数据库信息  
  24.  
  25.   SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, \  
  26.  
  27.   bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits \  
  28.  
  29.   WHERE name = '%{0}' AND quota_type = '%{1}'"  
  30.  
  31.   SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, \  
  32.  
  33.   bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \  
  34.  
  35.   WHERE name = '%{0}' AND quota_type = '%{1}'"  
  36.  
  37.   SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, \  
  38.  
  39.   bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, \  
  40.  
  41.   files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, \  
  42.  
  43.   files_xfer_used = files_xfer_used + %{5} \  
  44.  
  45.   WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies  
  46.  
  47.   SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies  
  48.  
  49.   QuotaLimitTable sql:/get-quota-limit  
  50.  
  51.   QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally  
  52.  
  53.   #--------- load qudes.mod for Quota limit --------#  
  54.  

#p#

  三、建立FTP用户认证相关表

  1、默认root用户只能从本地登陆,新建admin用户:

  1.   shell>mysql -u root -p  
  2.  
  3.   password: ********  
  4.  
  5.   mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY "123456" WITH GRANT OPTION;  
  6.  
  7.   mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"localhost" IDENTIFIED BY "123456" WITH GRANT OPTION;  
  8.  

  2、创建proftpd数据库:

  1.   mysql>CREATE DATABASE proftpd;  
  2.  

  3、建立一个访问proftpd库用户:ftpuser

  1.   mysql>GRANT ALL PRIVILEGES ON proftpd.* TO ftpuser@"%" IDENTIFIED BY "123456";  
  2.  
  3.   mysql>GRANT ALL PRIVILEGES ON proftpd.* TO ftpuser@"localhost" IDENTIFIED BY "123456";  
  4.  

  4、建立用户验证表:

  1.   shell>mysql -u ftpuser -p proftpd  
  2.  
  3.   password: ********  
  4.  
  5.   mysql>CREATE TABLE ftpusers (  
  6.  
  7.   userid VARCHAR(30) NOT NULL UNIQUE,  
  8.  
  9.   passwd VARCHAR(80) NOT NULL,  
  10.  
  11.   uid INTEGER UNIQUE,  
  12.  
  13.   gid INTEGER,  
  14.  
  15.   homedir VARCHAR(255),  
  16.  
  17.   shell VARCHAR(255)  
  18.  
  19.   )DEFAULT CHARSET=gbk;  
  20.  

  5、建立磁盘限额数据表

  1.   CREATE TABLE quotalimits (  
  2.  
  3.   name VARCHAR(30),  
  4.  
  5.   quota_type ENUM("user", "group", "class", "all") NOT NULL,  
  6.  
  7.   per_session ENUM("false", "true") NOT NULL,  
  8.  
  9.   limit_type ENUM("soft", "hard") NOT NULL,  
  10.  
  11.   bytes_in_avail FLOAT NOT NULL,  
  12.  
  13.   bytes_out_avail FLOAT NOT NULL,  
  14.  
  15.   bytes_xfer_avail FLOAT NOT NULL,  
  16.  
  17.   files_in_avail INT UNSIGNED NOT NULL,  
  18.  
  19.   files_out_avail INT UNSIGNED NOT NULL,  
  20.  
  21.   files_xfer_avail INT UNSIGNED NOT NULL  
  22.  
  23.   )DEFAULT CHARSET=gbk;  
  24.  
  25.   CREATE TABLE quotatallies (  
  26.  
  27.   name VARCHAR(30) NOT NULL,  
  28.  
  29.   quota_type ENUM("user", "group", "class", "all") NOT NULL,  
  30.  
  31.   bytes_in_used FLOAT NOT NULL,  
  32.  
  33.   bytes_out_used FLOAT NOT NULL,  
  34.  
  35.   bytes_xfer_used FLOAT NOT NULL,  
  36.  
  37.   files_in_used INT UNSIGNED NOT NULL,  
  38.  
  39.   files_out_used INT UNSIGNED NOT NULL,  
  40.  
  41.   files_xfer_used INT UNSIGNED NOT NULL  
  42.  
  43.   )DEFAULT CHARSET=gbk;  
  44.  
  45.   #以上quotalimits表是FTP用户的磁盘限额配置信息,quotatallies表存放的是用户磁盘限额变动的信息。  
  46.  
  47.   #quotatallies表不需要作修改,由程序自动记录  
  48.  
  49.   #下面是quotalimits 表中各字段的含意:  
  50.  
  51.   quota_type 磁盘限额的鉴别  
  52.  
  53.   bytes_in_avail 上传***字节数,就是FTP用户空间容量  
  54.  
  55.   bytes_out_avail 下载***字节数  
  56.  
  57.   bytes_xfer_avail 总共可传输的文件的***字节数(上传和下载流量)  
  58.  
  59.   files_in_avail 总共能上传文件的数目  
  60.  
  61.   files_out_avail 能从服务器上下载文件的总数目  
  62.  
  63.   files_xfer_avail 总共可传输文件的数目(上传和下载)  
  64.  

  6、数据表数据初始化

  6.1 建立用户:

  如果想要一次增加一个新记录,可以使用INSERT语句:

  1.   INSERT INTO ftpUsers (userid, passwd, uid, gid, homedir, shell) values ('centre'password('centre'), 2001,2000, '/home/ftp','/usr/sbin/nologin');  
  2.  

  如果想要将文本文件“ftpusers.txt”装载到ftpusers表中,使用LOAD DATA语句:

  1.   LOAD DATA LOCAL INFILE '/path/ftpusers.txt' INTO TABLE ftpusers CHARACTER SET 'gbk' LINES TERMINATED BY '\r\n';  
  2.  

  6.2 建立磁盘配额:

  test 用户512000000byte限制

 

  1.   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 ('test''user''true''hard', 512000000, 0,0,0,0,0);  
  2.  

【编辑推荐】

  1. ProFTPD.conf的详细配置方法
  2. Proftpd配置文件结构分析
  3. ProFTP下的参数说明
  4. Porftpd.conf的配置格式
  5. lampp的ProFTPd下新增FTP用户的方法
  6. Debian下配置ProFTPd服务器
  7. Centos下ProFTPD配置FTP服务器
责任编辑:zhaolei 来源: CSDN
相关推荐

2011-02-25 14:35:06

ubuntuproftp安装

2011-03-03 09:04:25

2011-03-03 14:47:35

2011-03-03 14:47:35

2011-03-03 11:06:44

Ubuntu安装ProFTPD

2011-02-23 09:47:07

UbuntuProFTPdMySQL

2011-02-23 09:47:07

2011-03-02 09:26:26

ubuntuproftpd

2011-03-08 17:04:10

ProFTPDUbuntu

2011-02-22 16:24:30

2011-03-03 13:07:13

安装Proftpd

2011-02-25 09:44:51

怎样安装Proftpd

2011-02-22 09:50:01

2011-02-24 15:04:58

ProftpdCentos

2011-03-07 17:24:33

ProFTPD安装

2011-02-24 14:47:48

ProFTPD

2011-02-23 10:43:17

2011-03-08 11:28:15

proftpd

2011-02-23 10:11:10

ProFTPd安装

2011-02-25 15:38:12

ProftpdRedHat
点赞
收藏

51CTO技术栈公众号