ProFTPD复杂权限的设置

        ProFTPD的配置和安装在鸟哥的私房菜中讲的非常详细了,这里就不再赘述。不过在安装时需要注意,如果以后有支持LDAP的要求,那么最好在运行 configure时加上—with-modules=mod_ldap参数。本文主要讲下ProFTPD的访问控制。ProFTPD的访问控制主要通过 Allow、Deny、Order、Limit四个指令来实现。其中Allow和Deny就是允许或不允许用户或主机进行操作,Order确定规则的运用 顺序,即是先运用Allow规则还是Deny规则。Limit就是限制用户或主机能够执行哪些操作,下面就进行详细的说明。

1、Allow
       Allow指令位于标记之间,明确的指明哪些用户、主机或网络能够执行Limit指令指定的命令 或操作。Allow一般和Order、Deny一起实现精确的访问控制。Allow后面可以使用关键字ALL或NONE来指定所有主机或用户的权限,默认 是ALL。如果对单独的用户或主机进行控制,那么必须指定用户名或主机名,出于安全和性能考虑主机名最好使用IP地址标识。当然也可以使用掩码来指定一个 网段的访问控制权限。下面是一个简单的例子:
        
                Order allow,deny
                Allow from 192.168.1.96,trusted-domain.com
                Deny from all
        

这个例子的意思就是只允许主机192.168.1.96、trusted-domain.com和10.1.1.网段的主机登录。

2、Deny
        Deny指令的意思和Allow指令相反,用法相似,这里就不详细说明了。

3、Order
        Order用来控制访问控制指令的优先权,在上面的例子中,Order allow,deny就表示先运用Allow规则然后再运用Deny规则。

4、Limit
        在ProFTPD的访问控制中我们用的比较多的应该就是Limit了,Limit也是这四个指令中最复杂的。Limit指令是用来控制命令和行为的,它有 三种参数类型:原始FTP命令、FTP命令组和ALL关键字。FTP命令组是多个原始FTP命令组合起来的,可以实现一定功能的命令集合。FTP命令组主 要包括DIRS(列出目录)、LOGIN(登录)、READ(可读)、WRITE(可写)。这三种参数是有优先级的:原始FTP命令  > FTP命令组 >  ALL关键字。 也就是说,如果Limit指令的参数中既有原始FTP命令也有FTP命令组,那么就只有原始FTP命令起作用而FTP命令组就会被忽视掉。
        Limit指令一般用在标记间。在ProFTPD下子目录会继承父目录的属性, 这就意味着用在标记间的Limit指令不仅会控制指定目录的访问权限而且会控制 该目录下的所有子目录及文件的访问权限。Limit可以用来限制某个目录下的命令,但是不可以覆盖目录的系统权限。也就是说Linux系统权限仍然起作 用。如果设置了目录test的允许写,但是该用户对test目录只有读权限,这时该用户就不能向test目录写入。
        在标记块中,除了可以使用Allow、Deny、Order指令外,还可以使用 AllowUser、AllowGroup、AllowAll、AllowClass、DenyUser、DenyGroup、DenyAll和 DenyClass等指令。

5、实例
下面就来举几个例子说明上述指令的用法:

1、 指定某个目录只能由管理员删除,其他用户只能上传下载
 
   
      AllowUser ftpadm
      DenyAll
   

 


2、  指定某台主机对某个目录的访问权限

       
                DenyAll
       

       
                Order allow,deny
                Allow from 192.168.1.93
                Deny from all
       

       
                Order allow,deny
                Allow from 192.168.1.96
                Allow from 192.168.1.93
                Deny from all
       


       这里实现了主机192.168.1.93对目录/path/to/dir有读写权限,而主机192.168.1.96只有只读权限。在这里需要说明的是, 在块中所有的命令默认都是允许的。上面的例子中首先对所有用户关闭WRITE 命令,然后再对指定的主机打开相应的命令。这里注意下的Allow from 192.168.1.93语句,如果删除这条语句那么主机192.168.1.93在该目录下就不可以下载,也就是说主机192.168.1.93就会没 有READ权限。即使你在里加上READ()也不行。

3、  只允许匿名用户登录
 
         DenyAll
 

 
        
                AllowAll
        

 

LOGIN命令用来限制登录,该命令对于块是无效的。像下面这种使用方式是无法工作的:
 
        
                enyUser foo
        

 


6、总结
     最后总结一下:
继承性 :子目录会继承其父目录的属性。
优先级 :优先级由大到小的顺序:
    原始FTP命令(LIST  DELE等) >  命令组(DIRS  READ  WRITE)  >  ALL关键字
访问控制的应用顺序 :不论出现顺序如何,先应用拒绝(Deny),后应用允许(Allow)
系统权限 :Linux系统权限仍然起作用。如果设置了目录test的允许写,但是该用户对test目录只有读权限,这是该用户就不能向test目录写入。
默认值 :在块中,默认是允许所有的命令和操作。

更多内容请看:http://www.armjishu.com/bbs/viewtopic.php?id=1716&flag=412

你可能感兴趣的:(系统集成)