当前位置:IT教程网教程中心操作系统综合文章 → 教程内容

Proftpd在redhat8.0上的安装配置--PROFTPD

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2007-1-2 11:06:00


by hihi 2004-10-10

目的:配置一个稳定、功能要求不高的ftp服务器。新增一个用户,该用户限制在默认目录下,有可读可写权限。
原因:公司服务器上临时需要添加ftp服务,redhat8.0上自带wu-ftp和vsftp,wu-ftp自身有安全问题,vsftp性能和安全都很好,但配置的参

数比较多,所有还是选用了proftpd
软件及环境:proftpd-1.2.9.tar.gz(这里我们使用的源码包)+redhat8.0
proftpd的下载地址:www.proftpd.org

ProFTP的设置:
1、解压proftpd
tar xvzf proftpd-1.2.9.tar.gz
2、安装proftpd
cd proftpd-1.2.9
#将proftpd安装到/usr/local/proftpd目录下
./configure --prefix=/usr/local/proftpd
make
make install
#到此proftpd安装完毕
3、新建一个目录,并赋予777权限
mkdir /usr/local/proftpd/pubftp
chmod 777 /usr/local/proftpd/pubftp
4、新建一个用户pubftp
useradd pubftp
5、修改该用户的默认登陆目录
vi /etc/passwd
找到pubftp用户所在的行,修改默认登陆目录到第3步新建的目录上
例如:
pubftp:x:504:504::/usr/local/proftpd/pubftp:/bin/bash
6、修改proftpd.conf配置文件
编辑/usr/local/proftpd/etc/proftpd.conf,找到“Group nobody”,改为“Group nobody”,因为RedHat Linux8.0中没有“nobody”这个

组。
在proftpd.conf加入 DefaultRoot ~  一句,这一句就将ftp用户限制在自己的目录下。
7、启动proftpd,并设置proftpd为自启动(服务器重启,proftpd服务将自动加载)
#启动
/usr/local/proftpd/sbin/proftpd
#加为自启动
cp /usr/local/proftpd/sbin/proftpd /etc/init.d/proftpd
8、测试ftp是否正常
#在服务器端,查看21端口是否已经启动
netstat -an|grep LISTEN
#客户端,查看ftp是否能正常连接
ftp 192.168.0.1

如果一切都正常的化,那这个ftp服务器就已经配置好了:)


附录1:FAQ
1、Proftpd如何限速和设置发呆退出?

可以使用:
RateReadBPS RateReadFreeBytes
RateWriteBPS RateWriteFreeBytes
来限制下载和上载速度:
RateReadBPS和RateWriteBPS限制下载和上载的速率
RateReadFreeBytes和RateWriteFreeBytes限制当用户现在这么多数据量以后再进行限速,这样可以实现对于小文件不限速,而大文件限速。


TimeoutIdle -- 设置空闲连接超时时钟
TimeoutLogin -- 设置空闲登陆超时时钟
TimeoutNoTransfer -- 设置当没有数据传输时的超时时钟
TimeoutStalled -- 设置被阻塞的下载的超时时钟

2、proftpd如何实现磁盘限额
 
首先编译的时候指定--with-modules的时候要包含mod_quota。
然后在配置文件中使用:
Quotas on
QuotaCalc on
DefaultQuota 8000
QuotaBlockSize 1024
QuotaBlockName kb
就可以实现磁盘限额。其中DefaultQuota说明用户只能用8000个block,而QuotaBlockSize则指明每个block大小是1024byte也就是1k。

QuotaBlockName只在提示中出现,告诉用户block的单位。

3、如何设置proftpd的服务进程数

如果机器硬件配置不是非常好,或者为了防止DoS攻击,有时候需要限制proftpd所能提供的同时连接数。在standalone情况下,可以设置:
MaxInstances 100
这样就能限制当外界的所有连接数到100的时候,proftpd将禁止新连接。

4、Proftpd如何限制每个客户端机器的同时连接
 
只要在配置文件里面使用:
MaxClientsPerHost 10
这样限制客户端机器最多只能10个连接。用在匿名用户的配置中特别有用,有效地防止了某个客户端大量占用了其他人的连接数。

5、Proftpd如何限制某个用户的同时连接数
 
Proftpd 1.2.7rc1以后提供了一个新参数-MaxClientsPerUser。在配置文件中添加下列参数:
MaxClientsPerUser 5
这样就能限制每个用户只能同时有5个连接,使用例如flashget等下载工具的时候就最多只能分成5块下载。

6、Proftpd如何提供续传功能
 
如果要支持下载续传,那么必须指定:
AllowRetrieveRestart on
如果要支持上传续传,那么必须指定:
AllowOverwrite on
AllowStoreRestart on
必须同时指定AllowOverwrite和AllowStoreRestart的原因是由于重新上传或者续传也是属于覆盖文件。
同时记得不要同时使用HiddenStor和AllowStoreRestart。

7、proftpd如何允许以root身份登录
 
在配置文件中使用下面的配置:
RootLogin on    

8、如何缩短连接到proftpd服务的时间

在proftpd.conf里面加入两行:
UseReverseDNS off
IdentLookups off
防止proftpd进行DNS反查以及对用户端进行ident确认。

附录2:
一个proftpd.conf的例子

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "ProFTPD Default Installation"
ServerType                      standalone   #设置FTP以Standalone模式运行,而不是以dameon模式
DefaultServer                   on
DefaultRoot ~         #将用户限制在默认目录下
UseReverseDNS off        #防止proftpd进行DNS反查以及对用户端进行ident确认
IdentLookups off

# Port 21 is the standard FTP port.
Port                            21 #FTP服务默认占用的端口
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022 #默认用户权限设定

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            nobody #设置FTP服务以nobody运行
Group                           nobody

# Normally, we want files to be overwriteable.
<Directory /*>
  AllowOverwrite                on
</Directory>

# A basic anonymous configuration, no upload directories.
<Anonymous ~ftp>
  User                          ftp  #匿名登录使用ftp用户
  Group                         ftp  #匿名登录使用ftp组
  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias                     anonymous ftp #给ftp用户anonymous的别名,使得anonymous登录就是ftp用户登录

  # Limit the maximum number of anonymous logins
  MaxClients                    10 #最多10个匿名用户同时在线

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin                  welcome.msg  #登录FTP显示的欢迎信息。放在FTP的根目录下
  DisplayFirstChdir             .message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>

</Anonymous>

附录3、proftpd的一些命令
1、ftpshut:关闭FTP服务,并在/etc下生成文件shutmsg。要重新开放FTP服务,把/etc/shutmsg删除。
2、ftpcout:FTP服务器在线人数信息显示。
3、ftpwho:FTP服务器在线人员名单。
4、ftptop:FTP服务器当前情况。

附录4、FTP 数字代码的意义 
110 重新启动标记应答。 
120 服务在多久时间内ready。 
125 数据链路埠开启,准备传送。 
150 文件状态正常,开启数据连接端口。 
200 命令执行成功。 
202 命令执行失败。 
211 系统状态或是系统求助响应。 
212 目录的状态。 
213 文件的状态。 
214 求助的讯息。 
215 名称系统类型。 
220 新的联机服务ready。 
221 服务的控制连接埠关闭,可以注销。 
225 数据连结开启,但无传输动作。 
226 关闭数据连接端口,请求的文件操作成功。 
227 进入passive mode。 
230 使用者登入。 
250 请求的文件操作完成。 
257 显示目前的路径名称。 
331 用户名称正确,需要密码。 
332 登入时需要账号信息。 
350 请求的操作需要进一部的命令。 
421 无法提供服务,关闭控制连结。 
425 无法开启数据链路。 
426 关闭联机,终止传输。 
450 请求的操作未执行。 
451 命令终止:有本地的错误。 
452 未执行命令:磁盘空间不足。 
500 格式错误,无法识别命令。 
501 参数语法错误。 
502 命令执行失败。 
503 命令顺序错误。 
504 命令所接的参数不正确。 
530 未登入。 
532 储存文件需要账户登入。 
550 未执行请求的操作。 
551 请求的命令终止,类型未知。 
552 请求的文件终止,储存位溢出。 
553 未执行请求的的命令,名称不正确。

附录5、FTP的使用

FTP的命令行格式为: ftp -v -d -i -n -g [主机名] ,其中

-v 显示远程服务器的所有响应信息;

-n 限制ftp的自动登录,即不使用;

.n etrc文件;

-d 使用调试方式;

-g 取消全局文件名。

ftp使用的内部命令如下(中括号表示可选项):

1.![cmd[args}:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip.

2.$ macro-ame[args]:执行宏定义macro-name.

3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。

4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。

5.ascii:使用ascii类型传输方式。

6.bell:每个命令执行完毕后计算机响铃一次。

7.bin:使用二进制文件传输方式。

8.bye:退出ftp会话过程。

9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。

10.cd remote-dir:进入远程主机目录。

11.cdup:进入远程主机目录的父目录。

12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如: chmod 777 a.out 。

13.close:中断与远程服务器的ftp会话(与open对应)。

14.cr:使用asscii方式传输文件时,将回车换行转换为回行。

15.delete remote-file:删除远程主机文件。

16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如: deb up 3,若设为0,表示取消debug。

17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。

18.disconnection:同close。

19.form format:将文件传输方式设置为format,缺省为file方式。

20.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。

21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。

22.hash:每传输1024字节,显示一个hash符号(#)。

23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。

24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。

25.image:设置二进制传输方式(同binary)。

26.lcd[dir]:将本地工作目录切换至dir。

27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。

28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。

29.mdelete[remote-file]:删除远程主机文件。

30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如: mdir *.o.*.zipoutfile 。

31.mget remote-files:传输多个远程文件。

32.mkdir dir-name:在远程主机中建一目录。

33.mls remote-file local-file:同nlist,但可指定多个文件名。

34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式

35.modtime file-name:显示远程主机文件的最后修改时间。

36.mput local-file:将多个文件传输至远程主机。

37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。

38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。

39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换,如:nmap ..[,].[,

],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。

40.ntrans[inchars[outchars}:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。

41.open host[port]:建立指定ftp服务器连接,可指定连接端口。

42.passive:进入被动传输方式。

43.prompt:设置多个文件传输时的交互提示。

44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必

须为open,以首先建立两个服务器间的连接。

45.put local-file[remote-file]:将本地文件local-file传送至远程主机

46.pwd:显示远程主机的当前工作目录。

47.quit:同bye,退出ftp会话。

48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst.

49.recv remote-file[local-file]:同get。

50.reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。

51.rhelp[cmd-name]:请求获得远程主机的帮助。

52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态。

53.rename[from][to]:更改远程主机文件名。

54.reset:清除回答队列。

55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。

56.rmdir dir-name:删除远程主机目录。

57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀..1,.2等。

58.send local-file[remote-file]:同put。

59.sendport:设置PORT命令的使用。

60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。

61.size file-name:显示远程主机文件大小,如:site idle 7200。

62.status:显示当前ftp状态。

63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。

64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。

65.system:显示远程主机的操作系统类型。

66.tenex:将文件传输类型设置为TENEX机的所需的类型。

67.tick:设置传输时的字节计数器。

68.trace:设置包跟踪。

69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:
type binary,设置二进制传输方式。

70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask3。

71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。

72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有响应都将显示给用户,缺省为on.

73.?[cmd]:同help.

广告位置