当前位置:操作系统 > Unix/Linux >>

proftpd学习笔记

proftpd学习笔记(一)

  这几天,公司终于放假了,终于可以安下心来好好学些proftp+mysql+quota。

  安装proftp之前,必须先做一个工作,假如你的mysql是自己编译的,那就必须先修改/etc/ld.so.conf,否则后面运行proftp会报错。

  vi /etc/ld.so.conf

  添加下面一行:

  /usr/local/mysql/lib/mysql

  注意大家如果mysql的安装路径于我不一样,则填写相应的路径,有关mysql的编译安装请参考《Linux+Apache+Mysql+PHP典型配置》。

  1。下载相关软件

  wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz

  下载proftp的最新版本1.2.9

  wget http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.11.tar.gz

  这是配合proftp的磁盘限额的模块

  2。解压编译

  tar zvxf proftpd-1.2.9.tar.gz

  tar zvxf proftpd-mod-quotatab-1.2.11.tar.gz

  cp mod_quotatab/*.c proftpd-1.2.9/contrib/

  cp mod_quotatab/*.h proftpd-1.2.9/contrib/

  vi proftpd-1.2.9/contrib/mod_sql_mysql.c

  找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如/usr/local/mysql/include/mysql/mysql.h

  编译:

  ./configure

  --prefix=/usr/local/proftpd

  --with-modules=mod_sql:mod_sql_mysql:mod_quotatab

  :mod_quotatab_sql:mod_ratio

  --with-includes=/usr/local/mysql/include/mysql

  --with-libraries=/usr/local/mysql/lib/mysql

  make

  make install

  这里我们编译的时候已经加进了mysql,quota,ratio等模块的支持,我会在后面讲他们的应用

  ok, 现在我们可以来启动proftp了,只要

  /usr/local/proftpd/sbin/proftpd

  用你的ftp客户端试验以下,应该可以正常登陆,包括匿名和linux用户名可以。

  其实默认的proftp满足日常的服务器管理用还是绰绰有余的,有个地方还是要修改一下,就是默认proftp的配置文件不支持ftp续传,所以我们只要

  vi /usr/local/proftpd/etc/proftpd.conf

  添加以下两行

  AllowRetrieveRestart on

  AllowStoreRestart on

  重新启动以下proftp,就可以正常续传文件了。

  创建proftpd脚本

  只要在proftp的源代码目录

  cp proftpd-1.2.9/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd

  记得修改proftpd文件,一般要修改proftpd的实际路径

  chmod 755 /etc/rc.d/init.d/proftpd

  ok

  以后就可以用这个教本来启动,停止,重启proftp

  呵呵,今天就讲这些,明天讲些proftp的一些基础配置:)

  proftpd学习笔记(二)

  上次我们讲了proftp的基本安装,由于我们后面有关于mysql和quota的设置,所以编译的时候把相应的模块都编译进去了,如果你不需要mysql和磁盘限额的功能,完全可以不需要这么编译。

  这里要讲一个非常实用的命令,

  /usr/local/proftpd/sbin/ftpshut

  这个命令还是比较实用的,因为你可能需要不断的调整你的服务器,而这个命令就非常灵活,可以在不停止proftpd进程的前提下,定时停止ftp连接,这里将会详细说它是怎么使用的。

  ftpshut [ -l min ] [ -d min ] time [ warning-message ... ]

  -l min: 在ftp关闭服务之前的几分钟内,尝试建立新的ftp连接均不被接受

  -d min: 在ftp关闭服务之前的几分钟内,已经建立的ftp连接将被中止

  time: 在多少时间后,服务器将关闭ftp服务,格式有两种

  +number 经过number分钟后关闭

  MMHH 在今天MM:HH服务器将关闭

  注意,这里我们用这个命令是把ftp服务给停了,但实际的proftpd进程还没停止,所以一般调试ftp会使用到这个命令。

  举例:

  再经过30分钟后,FTP服务将关闭,在这之前的20分钟不可接受任何新的ftp连接,已经建立的在服务关闭前10分钟强制断线,并在客户端显示“FTP Server Will shutdown at time”

  ftpshut -l 20 -d 10 +30 "FTP Server Will shutdown at time"

  其实ftpshut就是产生/etc/shutmsg ,你只要删除这个文件ftp又可以重新服务,或者

  直接

  ftpshut -R

  好了,开始讲一些proftpd的基本配置吧,其实大家如果熟悉apache的配置的话,你会发现proftpd的设置基本都是类似的,它的配置基本格式是

  #全局设置

  设置项目1 参数1

  设置项目2 参数2

  #某个目录的设置

  <Directory "路径名">

  ...

  ...

  </Directory>

  #关于匿名用户的设置

  <Anonymous "匿名登陆的目录">

  ...

  ...

  <Limit 限制动作>

  ...

  ...

  </Limit>

  </Anonymous>

  我们用到的比较多的可能是Limit的使用,Limit大致有以下动作,基本能覆盖全部的权限了,大家灵活使用就是了。

  CMD:Change Working Directory 改变目录

  MKD:MaKe Directory 建立目录的权限

  RNFR: ReName FRom 更改目录名的权限

  DELE:DELEte 删除文件的权限

  RMD:ReMove Directory 删除目录的权限

  RETR:RETRieve 从服务端下载到客户端的权限

  STOR:STORe 从客户端上传到服务端的权限

  READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等

  WRITE:写文件或者目录的权限,包括MKD和RMD

  DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的

  ALL:所有权限

  LOGIN:是否允许登陆的权限

  针对上面这个Limit所应用的对象,又包括以下范围

  AllowUser 针对某个用户允许的Limit

  DenyUser 针对某个用户禁止的Limit

  AllowGroup 针对某个用户组允许的Limit

  DenyGroup 针对某个用户组禁止的Limit

  AllowAll 针对所有用户组允许的Limit

  DenyAll 针对所有用户禁止的Limit

  关于限制速率的参数为:

  TransferRate STOR|RETR 速度(Kbytes/s) user 使用者

  下面我们以例子来解说proftp的配置,这样大家可能更加容易理解。

  1。ftp服务器支持断点续传,且最大支持同时10人在线,每个ip只允许一个连接;

  2。允许ftpusers用户组只能访问自己的目录,而不能访问上级或者其他目录;

  3。用户登陆服务器时不显示ftp服务器版本信息,以增加安全性;

  4。建立一个kaoyan的ftp帐户,属于ftpusers组,kaoyan用户只允许下载,没有可写的权限。下载速率限制在50Kbytes/s。

  5。建立一个upload用户,也属于ftpusers组,同kaoyan用户的宿主目录一样,允许upload用户上传文件和创建目录的权限,但不允许下载,并且不允许删除目录和文件的权限,上传的速率控制在100Kbytes/s

  先是前期的用户和组添加以及目录的权限设置

  group add ftpusers

  useradd -d /home/kaoyan -g ftpusers -s /bin/fales kaoyan

  useradd -d /home/kaoyan -g ftpusers -s /bin/fales upload

  chown -R kaoyan:upload /home/kaoyan

  chmod -R 775 /home/kaoyan

  如果你只想ftpusers组的用户访问,可以设置成770都行。

  设置/usr/local/proftpd/etc/proftpd.conf

  注意#表示注释,对设置没影响,可以不写

  ServerName "Frank's FTP Server"

  ServerType standalone

  DefaultServer on

  Port 21

  Umask 022

  MaxInstances 30 #最多有30个proftpd的PID

  User nobody

  Group nobody

  TimeoutStalled 10

  MaxClients 10 #最多允许10个用户在线

  MaxClientsPerHost 1 "对不起,一个IP只允许一个连接"

  AllowStoreRestart on

  #允许断点续传(上传),断点续续(下载)是默认支持的,不用设置

  DisplayLogin welcome.msg #欢迎词文件

  ServerIdent off #屏蔽服务器版本信息

  DefaultRoot ~ ftpusers #设置ftpusers组只能访问自己的目录

  <Directory />

  AllowOverwrite on

  </Directory>

  <Directory /home/kaoyan>

  <Limit WRITE> #不允许写

  DenyUser kaoyan

  </Limit>
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,