您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Linux下proftpd的安装配置与管理方法

添加时间:2011-4-20  添加: admin 
一. proftpd 简介。

  proftpd是一款开放源码的ftp服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache 的配置方式,使proftpd的配置和管理更加简单易懂。本文将介绍它在Red hat Linux 9中最基本的安装和配置。

  二.软件的相关资源。

  官方网站:http://www.proftpd.org/

  源码软件包:proftpd是开源的软件,可以去其官方网站下载。目前最新稳定版本为1.2.10。

  帮助文档: 该软件包中包含。

  FAQ:该软件包中包含。

  配置文件样例:该软件包中包含。

  三.软件的安装。

  1.安装

  由其官方网站中下载其源码软件包proftpd-1.2.10. tar.gz。接下来我将对安装过程的一些重要步骤,给出其解释:

  [root@localhost root]

  #tar xzvf proftpd-1.2.10. tar.gz

  [root@localhost root]

  #cd bind-9.3.1

  [root@localhost bind-9.3.1]

  #./configure

  [root@localhost bind-9.3.1]

  #make

  [root@localhost bind-9.3.1]

  #make install

  tar xzvf bind-9.3.1.tar.gz 解压缩软件包。

  ./configure 针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置,其常用选项有:

  ./configure --help 察看参数设置帮助。

  --enable-ipv6 支持ipv6。

  可以设置的参数很多,可以通过 -help察看需要的,一般情况下,默认设置就可以了。

  默认情况下,安装过程应该建立了:

  proftpd的deamon为/usr/local/sbin/proftpd

  proftpd的配置文件,/usr/local/etc/proftpd.conf。

  2.启动:

  [root@localhost root]

  # /usr/local/sbin/proftpd -c

  /usr/local/etc/proftpd.conf

  -c选项用来指定配置文件的位置,不指定的话默认位置是 /usr/local/etc/proftpd.conf 。

  正常情况下proftpd应该启动了,ps aux 应该可以查到proftpd的进程,或netstat -an 也可以看到21端口的服务已经起来了。(ftp默认端口)

  如果要设置开机自启动ftp server,只需在/etc/rc.d/rc.local中加入一行

  /usr/local/sbin/proftpd

  #!/bin/sh

  #

  # This will be executed

  *after* all the other init s.

  # You can put your own

  initialization stuff in here if you don't

  # want to do the full Sys V style init stuff.

  touch /var/lock/subsys/local

  /usr/local/sbin/proftpd

  四.软件的配置。

  1.初始配置文件

  默认配置文件的位置为:

  /usr/local/etc/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 "

  ServerType

  standalone

  DefaultServer

  on

  # Port 21 is the standard FTP port.

  Port 21

  ServerType 指定FTP Server 的启动类型,一般使用standalone方式比较简单,如果访问量不大,为节省资源考虑用xinetd侦听启动,必须在这里指定。Port 指定FTP的侦听端口,一般使用21端口

  # 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

  Umask 指定FTP server 进程的Umask 值,022与Linux系统得默认值一致。

  MaxInstances 指定 FTP server 的最大连接数。

  # Set the user and group under

  which the server will run.

  User nobody

  Group nogroup

  # To cause every FTP user to be

  "jailed" (chrooted) into their home

  # directory, uncomment this line.

  #DefaultRoot ~

  DefaultRoot

  User 和Group 指定proftpd 进程启动时的有效用户ID,处于安全考虑默认的身份是nobody,有一点要指出的是,一般Red Linux 9.0 中默认是没有nogroup 这个组的,把Group指定为nobody 即可。

  DefaultRoot 选项限制Linux 系统用户通过FTP方式登录时将被限制在其home 目录下。

  # Set the maximum number of seconds

  a data connection is allowed

  # to "stall" before being aborted.

  #TimeoutStalled 300

  AllowRetrieveRestart on

  AllowStoreRestart on

  # Normally, we want files to be overwriteable.

  

  AllowOverwrite on

    

  TimeoutStalled 指定一个连接的超时时间。

  AllowRetriveRestart 和AllowStroeRestart 指定允许断点续传。

  

  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

 

  这一部分,将在后面详细介绍。

 


2.配置文件结构分析

  #全局设置

  设置项目1 参数1

  设置项目2 参数2

  #某个目录的设置

  

  ...

  ...

 

  #关于匿名登陆的设置

  ...

  ...

  

  ...

  ...
   

  常用全局设置

  DefaultRoot ~ # 限制每个FTP用户在自己的目录下,不可查看上一级目录

  AllowRetrieveRestart on #下载时,允许断点续传

  AllowStoreRestart on #上传时,允许断点续传

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

  TransferRate STOR RETR 速度(Kbytes/s) user 使用者 #设定用户传输速率

  MaxHostsPerUser 1 #每个帐户最多允许来源ip为1个, 对防止ftp帐号还是比较有用的。

  MaxClientsPerUser 1 #每个帐户在每个客户端最多可以同时登陆1次,可以防止多线程软件下载对服务器的破坏

  MaxClientsPerHost 1 #同一个客户端只能最多1个帐号可以登陆

  WtmpLog on #是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。

  TimeoutIdle 600 #客户端idle时间设置,默认就是600秒

  DisplayLogin welcome.msg #设置ftp登陆欢迎信息文件

  RootLogin on #允许root用户登录,默认是不允许的,安全起见不推荐此选项。

  欢迎词设置

  关于欢迎文件的设置包含如下参数:

  %T 目前的时间

  %F 所在硬盘剩下的容量

  %C 目前所在的目录

  %R Client 端的主机名称

  %L Server 端的主机名称

  %U 使用者帐户名称

  %M 最大允许连接人数

  %N 目前的服务器连接人数

  %E FTP服务器管理员的 email

  %i 本次上传的文件数量

  %o 本次下载的文件数量

  %t 本次上传+下载的文件数量

  知道这些参数,可以写出一个友好的欢迎语文件,例如:

  欢迎您%U, 这是T-force的测试FTP服务器;

  目前时间是:%T;

  本服务器最多允许%M个用户连接数;

  目前服务器上已有%N个用户连接数;

  目前你所在的目录是%C;

  目录所在的硬盘还剩下%F字节。

  anonymous 配置块

  在配置文件中anonymous配置块是非常重要的一部分,全局帐户的权限配置一般都由它来控制,下面分析一个比较常见的例子

  # 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

  #设定用户的别名

  AnonRequirePassword on

  #登陆需要密码

  # 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


   AllowAll


  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等权限,还是比较实用的 

  注:在测试是否可以下载时,不能用长度为0的空文件去测试,要用一个有内容的文件(文件大小不能为0k)。

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

  AllowUser 针对某个用户允许的Limit

  DenyUser 针对某个用户禁止的Limit

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

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

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

  DenyAll 针对所有用户禁止的Limit

  五.一种简单实用的配置管理方式:

  proftpd和mysql组合可以完成比较庞大而且完备的权限控制,但是也同样增加了管理和维护的复杂性,在这里我介绍一种简单易行的配置方法,适用于100个用户以下的应用。这种方法的核心在于巧妙的运用了设置gid位,读者最好找资料了解一下相关的知识。这种方法的配置管理工作相当少,也相当的简单,同时还可以保持一个清晰的权限系统结构。

  1.思路

  首先需要明确的概念是proftpd的用户与linux系统的用户的关系:linux系统的用户即为proftpd的用户。proftpd的权限控制是基于Linux系统得权限控制之上的,即用户对于某个文件或目录,必须先有Linux系统的权限,在此基础上proftpd才能设置其特有的一些权限。其实一般来说Linux自有的权限系统就是一个比较完善的权限系统了,我们完全可以只利用这个权限系统,就足可以满足我们的要求了。

  我们设置一个ftp管理员ftpadmin属于ftpadmin组,ftp的根目录/ftp是ftpadmin的个人根目录,这样ftpadmin可以完成日常的管理。通过设置/ftp的gid可以保证新上传的文件是属于ftpadmin用户,加上再设置umask值002保证上传文件的组读写权限,这样管理员就可以对其管理下的文件进行管理,而同时保证了不改变该文件的属主。

  ftp的用户,我们只需新建一个Linux用户,而把他的用户目录制定在/ftp之下就可以。操作起来很简单。

  2.建立ftp管理员:ftpadmin

  [root@localhost root]groupadd ftpadmin #ftpadmin为新添加的组的名字

  [root@localhost root]useradd -d

  /ftp -g ftpadmin -s /sbin/nologin admin

  [root@localhost root]chmod 2775 /ftp

  同时保证ftpadmin 是 /ftp的属主,ftpadmin 是/ftp的组属主。这样就保证了ftpadmin对要管理的/ftp目录有全部的权限。 

  -s /sbin/nologin 指定用户不能从shell登录,就是说只能从ftp方式登录,这样是出于安全的考虑。

  修改/usr/local/etc/proftpd.conf

  nobody ftpadmin

  nogroup ftpadmin

  Umask 002

  #允许所有者,组用户对ftp进行管理。

  掩码Umask改为 002 。即组成员和所有者都可对文件夹进行增删,改等操作。其他用户可读可执行,但不可写。这样,ftpadmin用户可以通过同组的身份对所有的文件进行读写,同时也不改变其内容的原有权限。也就说,不改变这个文件夹下的文件的所有者身份,但同时又可以管理这些文件。

  chmod 2775 /ftp,通过设置了文件夹的gid,以后在这个文件夹下写的所有文件,不管其所有者是谁,文件的组必定是ftpadmin(因为/ftp的组属于ftpadmin),都合理的被纳于ftpadmin的管理之下。

  3.添加用户:user1

  useradd -d /ftp/user1 -g ftpadmin -s

  /sbin/nologin user1

  这样user1就对/ftp/user1的目录有完整的权限,而作为管理员也可以通过组权限对目录进行管理。

  每当需要添加用户的时候,只需方便的简单的添加一个Linux的用户就可以了。

  4.对应的配置文件:proftpd.conf中的重要条目

  Umask 002

  DefaultRoot

  Umask 002 保证了新建的文件有组读写权限。

  DefaultRoot ~ 保证 每个用户登录后被锁定在自己的目录里,看不到其他用户的目录。

   关键字:安装、目录

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站