热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ProFTPd安装配置和权限设置

1、安装在debian下,安装proftpd非常简单,使用apt-getinstallproftpd但需要注意的是,使用命令apt-cachesearchproftpd*会有如下的结果proftpd-doc?Versatile,virtual-hostingFTPdaemon(Documentation)proftpd

1、安装

在debian下,安装proftpd非常简单,使用

apt-get install proftpd

但需要注意的是,使用命令

apt-cache search proftpd*

会有如下的结果

proftpd-doc ? Versatile, virtual-hosting FTP daemon
(Documentation)
proftpd-ldap ? Versatile, virtual-hosting FTP daemon (with LDAP
support)
proftpd-mysql ? Versatile, virtual-hosting FTP daemon (with SQL
support)
proftpd-pgsql ? Versatile, virtual-hosting FTP daemon (with SQL
support)

说明debian下面的proftpd根据所支持的模块,deb包的名称也不一样。如安装mysql支持,直接安装proftpd-mysql。这点和redhat不同,不需要在安装过程中安装各种模块了

对于我,因为需要配置的是支持虚拟用户的proftpd,所以安装

apt-get install proftpd-mysql

这样proftpd就安装了。配置文件为/etc/proftpd.conf

所有的配置都要在这里面写。

下面是默认安装后的配置文件,不需要多解释了,很容易理解。类似apache的配置方法

#
# /etc/proftpd.conf — This is a basic ProFTPD configuration
file.
# To really apply changes reload proftpd after modifications.
#

ServerName    ”Debian”
ServerType    standalone
DeferWelcome    off

MultilineRFC2228   on
DefaultServer    on
ShowSymlinks    on

TimeoutNoTransfer   600
TimeoutStalled    600
TimeoutIdle    1200


DisplayLogin                   
welcome.msg
DisplayFirstChdir              
.message
ListOptions               
”-l”


DenyFilter    \*.*/

# Uncomment this if you are using NIS or LDAP to retrieve
passwords:
#PersistentPasswd   off

# Uncomment this if you would use TLS module:
#TLSEngine     on

# Uncomment this if you would use quota module:
#Quotas     on

# Uncomment this if you would use ratio module:
#Ratios     on

# Port 21 is the standard FTP port.
Port     21

# 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
Group     nogroup

# Umask 022 is a good standard umask to prevent new files and
dirs
# (second parm) from being group and world writable.
Umask     022 022
# Normally, we want files to be overwriteable.
AllowOverwrite    on

# Delay engine reduces impact of the so-called Timing Attack
described in
#
http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
#DelayEngine     off

# A basic anonymous configuration, no upload directories.


 
User     ftp
 
Group     nogroup
  # We want clients to be able to login with
“anonymous” as well as “ftp”
  UserAlias   
anonymous ftp
  # Cosmetic changes, all files belongs to
ftp user
  DirFakeUser on ftp
  DirFakeGroup on ftp
#
  RequireValidShell  
off
#
  # 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
  
     WRITE>
     
DenyAll
    
  
#
  # Uncomment this if you’re brave.
  # 
  #   # Umask 022 is a
good standard umask to prevent new files and dirs
  #   # (second parm)
from being group and world writable.
  #  
Umask     022 022
 
          

 
          
DenyAll
 
          

 
          

 
          
AllowAll
 
          

  # 
#

把原始的配置文件修改一下,然后进行我们自己的配置就可以了:0

proftpd在默认情况下不记录日志,这样就对于我们配置服务器不利,因为不能方便的知道错误信息。所以在最上面添加下面2行


SyslogLevel                    
emerg
SystemLog                      
/ftp/log/proftpd.log   
#这里是自己的服务器日志路径,修改成自己的:)


从上到下,修改

ServerName    ”Meteor’s Ftp”
ServerAdmin   

MaxInstances    30
#这是最大连接数,如果机器够好,不妨修改的大点

下面的这个无需修改

User     nobody
Group     nogroup

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

Umask     022 022

#无需修改

DefaultRoot    ~

限定用户只能在自己的目录中,肯定要写的了吧

AllowRetrieveRestart   on
AllowStoreRestart  
on    

#这2句是使proftpd支持断点续传

ServerIdent   
off   

#安全起见,关闭服务器信息的显示。这里关闭掉之后,默认看不到welcome信息。但可以在下面的对用户的设置中进行指定欢迎信息。

?权限设置——————————————————————————————————-

proftpd默认用户可以使用系统非root组的用户登录,登陆后都在自己的/home目录中。

同时匿名用户不能登陆。而要对权限进行进一步的设置,需要在proftpd.conf里面进行定制。

在默认的conf中,有如下的例子


 
User     ftp
 
Group     nogroup
  # We want clients to be able to login with
“anonymous” as well as “ftp”
  UserAlias   
anonymous ftp
  # Cosmetic changes, all files belongs to
ftp user
  DirFakeUser on ftp
  DirFakeGroup on ftp
#
  RequireValidShell  
off
#
  # 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
  
     WRITE>
     
DenyAll
    
  
#
  # Uncomment this if you’re brave.
  # 
  #   # Umask 022 is a
good standard umask to prevent new files and dirs
  #   # (second parm)
from being group and world writable.
  #  
Umask     022 022
 
          

 
          
DenyAll
 
          

 
          

 
          
AllowAll
 
          

  # 
#

proftpd的配置文件的格式和apache很相似:

#全局设置
设置项目1 参数1
设置项目2 参数2

#某个目录的设置


#关于匿名用户的设置



..

其中最重要的就是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:是否允许登陆的权限

针对这些设置,又有如下具体的配置:

AllowUser 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit

同时,可以针对单独的用户来限制速度

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

而对于虚拟用户,无法登陆的。所以,必须修改

下面是我的配置


User    
ftp                                                       
#指定用户的组和名称
Group     nogroup
UserAlias    anonymous
ftp                       
#使得ftp和匿名用户都能登陆
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell  
off                                
MaxClients   
50                                          
该用户的最大连接数
DisplayLogin   
welcome.msg                 
#显示欢迎信息,需要注意把msg文件放到登陆后的主目录
DisplayFirstChdir   .message
MaxClientsPerHost   
                           
#限制每个主机最大连接数

*>                                             
#这里是对目录进行设置,即不允许写

   DenyAll

incoming>                               
#对上传目录的设置,我们有一个incoming文件夹需要允许别人上传
Umask     022 022
READ>                                          
#不允许下载
   DenyAll

MKD>                                   
#允许上传和新建目录
   AllowAll

同时,我们还需要对ftp进行管理。所以在系统中建立一个用户,名称为ftpadmin,属于nogroup组,不允许登陆。同时赋予它对ftp所有的权限


User     ftpadmin
Group     nogroup


   
    AllowAll
   

同时,需要注意的是,在proftpd中作了限制之后,对ftp的权限,还受到主机文件系统权限的限制。

所以,给ftp的目录赋予nogroup组读写的权限


推荐阅读
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
author-avatar
手机用户2602932623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有