首页 运维 正文
Proftpd安装手册(Ubuntu)

 2022-10-23    365  

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

  linux核心:2.6.27-7-server

Proftpd安装手册(Ubuntu)

  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

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

      8、make install

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

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

      粘贴如下代码:

      #!/bin/sh 
  •   #ProFTPDfiles
  •   FTPD_BIN=/usr/local/sbin/proftpd
  •   FTPD_CONF=/usr/local/etc/proftpd.conf
  •   PIDFILE=/usr/local/var/proftpd.pid
  •   #IfPIDFILEexists,doesitpointtoaproftpdprocess?
  •   if[-f$PIDFILE];then
  •   pid=`cat$PIDFILE`
  •   fi
  •   if[!-x$FTPD_BIN];then
  •   echo"$0:$FTPD_BIN:cannotexecute"
  •   exit1
  •   fi
  •   case$1in
  •   start)
  •   if[-n"$pid"];then
  •   echo"$0:proftpd[PID$pid]alreadyrunning"
  •   exit
  •   fi
  •   if[-r$FTPD_CONF];then
  •   echo"Startingproftpd..."
  •   $FTPD_BIN-c$FTPD_CONF
  •   else
  •   echo"$0:cannotstartproftpd--$FTPD_CONFmissing"
  •   fi
  •   ;;
  •   stop)
  •   if[-n"$pid"];then
  •   echo"Stoppingproftpd..."
  •   kill-TERM$pid
  •   else
  •   echo"$0:proftpdnotrunning"
  •   exit1
  •   fi
  •   ;;
  •   restart)
  •   if[-n"$pid"];then
  •   echo"Rehashingproftpdconfiguration"
  •   kill-HUP$pid
  •   else
  •   echo"$0:proftpdnotrunning"
  •   exit1
  •   fi
  •   ;;
  •   *)
  •   echo"usage:$0{start|stop|restart}"
  •   exit1
  •   ;;
  •   esac
  •   exit0
  •   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验证:

      #--------loadsql.modformysqlauthoritative--------# 
  •   #配置FTP用户为MySQL数据库认证方式
  •   #SQLConnectInfodatabaseName@hostName:portuserNamepassword
  •   SQLConnectInfoproftpd@localhostftpuser123456
  •   #Backend表示用户认证方式为MySQL数据库的认证方式
  •   #Plaintext表示明文认证方式,排在最前面的为***使用的方式
  •   SQLAuthTypesBackendPlaintext
  •   #校验数据表
  •   #SQLAuthenticateusersgroupsusersetfastgroupsetfast
  •   SQLAuthenticateusers
  •   #指定ftp用户数据表的名字和其中的字段名,表名可自行定义,字段名不要改动。
  •   SQLUserInfoftpusersuseridpasswduidgidhomedirshell
  •   #指定ftp用户组数据表的名字和其中的字段名,这个数据表是可选的,字段名不要改动。
  •   #SQLGroupInfoftpGroupgroupnamegidmembers
  •   #指定是否必须为FTP用户指定一个系统shell,off表示不用指定,on表示必须指定。为了系统安全应该指定为off。
  •   RequireValidShelloff
  •   #如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录
  •   #SQLHomedirOnDemandon
  •   SQLNegativeCacheon
  •   SQLLogFile/var/log/proftpd.sql.log
  •   #用户登录欢迎窗口中显示登录用户已访问次数
  •   SQLNamedQuerygetloginsSELECT"login_countsfromftpuserswhereuserid='%u'"
  •   SQLNamedQueryupdateloginsUPDATE"login_counts=login_counts+1WHEREuserid='%u'"ftpusers
  •   SQLShowInfoPASS"230""You'veloggedon%{getlogins}times!"
  •   SQLLogPASSupdatelogins
  •   #--------loadsql.modformysqlauthoritative--------#
  •   6、磁盘配额:

      #--------loadqudes.modforQuotalimit--------# 
  •   #打开磁盘限额引擎
  •   QuotaEngineon
  •   #设置磁盘限额
  •   QuotaDirectoryTallyon
  •   #设置磁盘容量显示时的单位
  •   QuotaDisplayUnitsMb
  •   #设置磁盘限额日志文件
  •   QuotaLog"/var/log/proftpd.quota.log"
  •   #允许显示磁盘限额信息,ftp登录后可执行quotesitequota命令查看当前磁盘使用情况
  •   QuotaShowQuotason
  •   #指定磁盘限额模块使用的数据库信息
  •   SQLNamedQueryget-quota-limitSELECT"name,quota_type,per_session,limit_type,bytes_in_avail,\
  •   bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_availFROMquotalimits\
  •   WHEREname='%{0}'ANDquota_type='%{1}'"
  •   SQLNamedQueryget-quota-tallySELECT"name,quota_type,bytes_in_used,bytes_out_used,\
  •   bytes_xfer_used,files_in_used,files_out_used,files_xfer_usedFROMquotatallies\
  •   WHEREname='%{0}'ANDquota_type='%{1}'"
  •   SQLNamedQueryupdate-quota-tallyUPDATE"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}\
  •   WHEREname='%{6}'ANDquota_type='%{7}'"quotatallies
  •   SQLNamedQueryinsert-quota-tallyINSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"quotatallies
  •   QuotaLimitTablesql:/get-quota-limit
  •   QuotaTallyTablesql:/get-quota-tally/update-quota-tally/insert-quota-tally
  •   #---------loadqudes.modforQuotalimit--------#
  • #p#

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

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

      shell>mysql-uroot-p 
  •   password:********
  •   mysql>GRANTALLPRIVILEGESON*.*TOadmin@"%"IDENTIFIEDBY"123456"WITHGRANTOPTION;
  •   mysql>GRANTALLPRIVILEGESON*.*TOadmin@"localhost"IDENTIFIEDBY"123456"WITHGRANTOPTION;
  •   2、创建proftpd数据库:

      mysql>CREATEDATABASEproftpd; 
  •   3、建立一个访问proftpd库用户:ftpuser

      mysql>GRANTALLPRIVILEGESONproftpd.*TOftpuser@"%"IDENTIFIEDBY"123456"; 
  •   mysql>GRANTALLPRIVILEGESONproftpd.*TOftpuser@"localhost"IDENTIFIEDBY"123456";
  •   4、建立用户验证表:

      shell>mysql-uftpuser-pproftpd 
  •   password:********
  •   mysql>CREATETABLEftpusers(
  •   useridVARCHAR(30)NOTNULLUNIQUE,
  •   passwdVARCHAR(80)NOTNULL,
  •   uidINTEGERUNIQUE,
  •   gidINTEGER,
  •   homedirVARCHAR(255),
  •   shellVARCHAR(255)
  •   )DEFAULTCHARSET=gbk;
  •   5、建立磁盘限额数据表

      CREATETABLEquotalimits( 
  •   nameVARCHAR(30),
  •   quota_typeENUM("user","group","class","all")NOTNULL,
  •   per_sessionENUM("false","true")NOTNULL,
  •   limit_typeENUM("soft","hard")NOTNULL,
  •   bytes_in_availFLOATNOTNULL,
  •   bytes_out_availFLOATNOTNULL,
  •   bytes_xfer_availFLOATNOTNULL,
  •   files_in_availINTUNSIGNEDNOTNULL,
  •   files_out_availINTUNSIGNEDNOTNULL,
  •   files_xfer_availINTUNSIGNEDNOTNULL
  •   )DEFAULTCHARSET=gbk;
  •   CREATETABLEquotatallies(
  •   nameVARCHAR(30)NOTNULL,
  •   quota_typeENUM("user","group","class","all")NOTNULL,
  •   bytes_in_usedFLOATNOTNULL,
  •   bytes_out_usedFLOATNOTNULL,
  •   bytes_xfer_usedFLOATNOTNULL,
  •   files_in_usedINTUNSIGNEDNOTNULL,
  •   files_out_usedINTUNSIGNEDNOTNULL,
  •   files_xfer_usedINTUNSIGNEDNOTNULL
  •   )DEFAULTCHARSET=gbk;
  •   #以上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总共可传输文件的数目(上传和下载)
  •   6、数据表数据初始化

      6.1 建立用户:

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

      INSERTINTOftpUsers(userid,passwd,uid,gid,homedir,shell)values('centre',password('centre'),2001,2000,'/home/ftp','/usr/sbin/nologin'); 
  •   如果想要将文本文件“ftpusers.txt”装载到ftpusers表中,使用LOAD DATA语句:

      LOADDATALOCALINFILE'/path/ftpusers.txt'INTOTABLEftpusersCHARACTERSET'gbk'LINESTERMINATEDBY'\r\n'; 
  •   6.2 建立磁盘配额:

      test 用户512000000byte限制

      INSERTINTOquotalimits(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); 
  • 原文链接:https://77isp.com/post/8635.html

    =========================================

    https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。