ProFTPD部署指南

 
服务器环境:RHEL5.4
下载ProFTP:
# wget ftp://ftp1.hk.proftpd.org/proftpd/distrib/source/proftpd-1.3.4a.tar.bz2
 
 
1.FTP要求:
  公司四个部门:运维部、开发部、销售部、行政部
  各部门用户访问FTP后可以看到所有目录,仅可以访问本部门的目录
  需要FTP日志功能
  FTP认证方式基于文件认证方式
  共享目录:/var/ftp
 
 
2.解压文件:
# tar  -xjf   proftpd-1.3.4a.tar.bz2  -C /usr/src/
# cd  /usr/src/proftpd-1.3.4a/
安装前请先阅读INSTALL与README文件
 
 
3.安装ProFTPD:
#./configure  --help 查看帮助选项
######################################################################################
以下为部分选项说明:       
--prefix=PREFIX 指定安装路径(--prefix=/usr/local/)       
--sysconfdir=DIR        指定FTP服务配置文件路径(--sysconfdir=/etc)       
--localstatedir=DIR     指定运行状态的文件存放位置(默认/var/proftpd)       
--with-modules=mod_ldap 指定加载功能模块       
--enable-memcache       支持缓存功能       
--enable-nls            支持多语言环境(如中文),安装完成后在主配置文件中需要指定字符编码(UseEncoding UTF-8 CP936)  
--enable-openssl        支持TLS加密FTP服务       
--enable-shadow 支持使用/etc/shadow验证用户密码       
######################################################################################################
 
 
注:需要GCC编译器
#./configure  --prefix=/usr/local/proftpd  --sysconfdir=/etc/  --enable-nls  --enable-openssl  --enable-shadow
#make
#make  install
#PATH=echo$PATH:/usr/local/proftpd/bin 添加环境变量
#useradd  -M -s /sbin/nologin  proftp
创建启动用户及组(该用户无法登录系统,没有宿主目录)
 
 
 
4.建立共享目录,修改配置文件:
 
#mkdir  -p  /var/ftp/{运维部,开发部,销售部,行政部}
#useradd -M -s /sbin/nologin  yunwei
#useradd -M -s /sbin/nologin  kaifa
#useradd -M -s /sbin/nologin  xiaoshou
#useradd -M -s /sbin/nologin  xingzheng
#chmod 777  /var/ftp/运维部
#chmod 777  /var/ftp/开发部
#chmod 777  /var/ftp/销售部
#chmod 777  /var/ftp/行政部
 
 
 
#vim  /etc/proftpd.conf     以下为配置文件原文(行号仅为参考值)
******************************************************************************************************
     1 # This is a basic ProFTPD configuration file (rename it to 
     2 # 'proftpd.conf' for actual use.  It establishes a single server
     3 # and a single anonymous login.  It assumes that you have a user/group
     4 # "nobody" and "ftp" for normal operation and anon.
     5
     6 ServerName "ProFTPD Default Installation"
                                         客户端连接后显示的字符
     7 ServerType standalone
                                         服务启动模式
     8 DefaultServer on
     9
    10 # Port 21 is the standard FTP port.
    11 Port 21 端口
    12
    13 # Don't use IPv6 support by default.
    14 UseIPv6 off 禁用IPv6
    15
    16 # Umask 022 is a good standard umask to prevent new dirs and files
    17 # from being group and world writable.
    18 Umask 022     权限掩码
    19
    20 # To prevent DoS attacks, set the maximum number of child processes
    21 # to 30.  If you need to allow more than 30 concurrent connections
    22 # at once, simply increase this value.  Note that this ONLY works
    23 # in standalone mode, in inetd mode you should use an inetd server
    24 # that allows you to limit maximum number of processes per service
    25 # (such as xinetd).
    26 MaxInstances 30      并发进程30个(防DoS***)
    27
    28 # Set the user and group under which the server will run.
    29 User nobody  启动服务的用户
    30 Group nobody  启动服务的组
    31
    32 # To cause every FTP user to be "jailed" (chrooted) into their home
    33 # directory, uncomment this line.
    34 #DefaultRoot ~ 共享根目录(默认为用户家目录)
    35
    36 # Normally, we want files to be overwriteable.
    37 AllowOverwrite on 是否允许使用文件覆写权限
    38
    39 # Bar use of SITE CHMOD by default
    40 权限设置
    41  DenyAll
    42
    43
    44 # A basic anonymous configuration, no upload directories.  If you do not
    45 # want anonymous users, simply delete this entire section.
    46
    47  User ftp
    48  Group ftp
    49
    50  # We want clients to be able to login with "anonymous" as well as "ftp"
    51  UserAlias anonymous ftp 用户别名
    52
    53  # Limit the maximum number of anonymous logins
    54  MaxClients 10         最大客户端连接数
    55
    56  # We want 'welcome.msg' displayed at login, and '.message' displayed
    57  # in each newly chdired directory.
    58  DisplayLogin welcome.msg 显示登录信息
    59  DisplayChdir .message
    60
    61  # Limit WRITE everywhere in the anonymous chroot
    62   权限设置
    63    DenyAll
    64  
    65
******************************************************************************************************
 
 
该文件格式:
##########################################################################
#   全局设置 参数值                                                   #
#   全局设置 参数值                                                   #
#                                                                        #
#    指定路径相关设置,可以使用Limit语法限制目录权限  #
#         ... ...                                                        #
#   ... ...                                                        #
#                                                            #
#                #
#                                                                        #
#  #
#    匿名共享路径相关设置(包括权限设置)     #
#             #
##########################################################################
 
 
 
Limit权限说明:
#########################################################################
# CWD  : Change Working Directory 进入该目录 #
# MKD  : Make Directory 创建目录 #
# RNFR : Rename from 更名 #
# DELE : Delete 删除文件 #
# RMD  : Remove Directory 删除目录 #
# READ : 可读         #
# WRITE: 可写 #
# STOR : 可上传 #
# RETR : 可下载         #
# DIRS : 允许列出目录 #
# LOGIN: 允许登录 #
# ALL  : 全部 #
#########################################################################
 
 
 
 
修改后有效的配置文件内容,部分内容为添加内容(#开始的部分为注释):
 
     6 ServerName "ProFTPD Default Installation"
     7 ServerType standalone
     8 DefaultServer on
     9  UseEncoding UTF-8 CP936 支持的编码格式(中文)
    11 Port 21
    12  AllowRetrieveRestart on    允许断点继传(上传)
    13  AllowStoreRestart on    允许断点继传(下载)
    14 UseIPv6 off
    18 Umask 022
    19  RootLogin off 禁止root登录ftp
    26 MaxInstances 30
    27  SystemLog /var/log/proftp.log
                                                 产生独立的日志文件
    28 TransferLog /var/log/proftp.log
                                                 记录用户下载的日志信息
 
 #####如果想指定自己的日志格式可以结合(ExtendLog,LogFormat)两个选项设置
 
 
    29 User proftp   设置启动用户为proftp
    30 Group proftp   设置启动组为proftp
    34 DefaultRoot /var/ftp   指定共享根目录为/var/ftp
    37 AllowOverwrite on
    46 # 该部分全部#注释,取消匿名访问功能
    47 #  User ftp
    48 #  Group ftp
    51 #  UserAlias anonymous ftp
    54 #  MaxClients 10
    58 #  DisplayLogin welcome.msg
    59 #  DisplayChdir .message
    62 #  
    63 #    DenyAll
    64 #  
    65 #
以下内容为设置权限,为手动添加内容
           所有用户可以看到所有部门的文件夹,仅可以访问自己部门的目录
*****************************************************************************************************
    67  RequireValidShell off 用户登录是否需要shell(对虚拟用户很重要)
    68  AuthUserFile /usr/local/proftpd/ftpd.passwd
                          通过文件认证用户登录,需要ftpasswd命令创建该文件
    69
    70  允许所有人可以查看根目录
    71 AllowAll
    72
    73
    74
    75
    76 DenyAll  拒绝所有人往该目录下执行Limit后的操作指令
    77  
    78
    79 DenyAll  禁止任何人在该目录下删除文件
    80
    81
    82 AllowUser yunwei 仅允许yunwei用户可以执行Limit后的所有指令
    83  
    84
    85
    86
    87 DenyAll
    88  
    89
    90 DenyAll
    91
    92
    93 AllowUser kaifa
    94  
    95
    96
    97
    98 DenyAll
    99  
   100
   101 DenyAll
   102
   103
   104 AllowUser xingzheng
   105  
   106
   107
   108
   109 DenyAll
   110  
   111
   112 DenyAll
   113
   114
   115 AllowUser xiaoshou
   116  
   117
******************************************************************************************************
 
 
 
5.创建虚机帐号
 
ftpasswd命令格式说明
(该命令可以创建用户文件、组文件,默认创建的用户文件为ftpd.passwd):
--passwd  创建密码文件,即AuthUserFile指定的文件
--group   创建组文件
--name  指定创建的用户名
--uid  指定用户虚拟UID
--gid     指定虚拟GID
--home  指定用户家目录
--shell   指定用户Shell
--file  指定创建的文件名
 
 
#ftpasswd  --passwd  --name=yunwei  --uid=1000  --home=/home/nohome  --shell=/bin/false
 
6.启动FTP服务:
 
#/usr/local/proftpd/sbin/proftpd
 
成功验证!!!!
这里仅以用户为实验环境,需要实现组功能的情况可以自行探索...
支持开源