热门标签 | 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组读写的权限


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 主流操作系统简介
    主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
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社区 版权所有