ProFTPD的配置和安装在鸟哥的私房菜中讲的非常详细了,这里就不再赘述。不过在安装时需要注意,如果以后有支持LDAP的要求,那么最好在运行 configure时加上—with-modules=mod_ldap参数。本文主要讲下ProFTPD的访问控制。ProFTPD的访问控制主要通过 Allow、Deny、Order、Limit四个指令来实现。其中Allow和Deny就是允许或不允许用户或主机进行操作,Order确定规则的运用 顺序,即是先运用Allow规则还是Deny规则。Limit就是限制用户或主机能够执行哪些操作,下面就进行详细的说明。
1、Allow
Allow指令位于<Limit></Limit>标记之间,明确的指明哪些用户、主机或网络能够执行Limit指令指定的命令 或操作。Allow一般和Order、Deny一起实现精确的访问控制。Allow后面可以使用关键字ALL或NONE来指定所有主机或用户的权限,默认 是ALL。如果对单独的用户或主机进行控制,那么必须指定用户名或主机名,出于安全和性能考虑主机名最好使用IP地址标识。当然也可以使用掩码来指定一个 网段的访问控制权限。下面是一个简单的例子:
<Limit LOGIN>
Order allow,deny
Allow from 192.168.1.96,trusted-domain.com
Deny from all
</Limit>
这个例子的意思就是只允许主机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指令一般用在<Directory></Directory>标记间。在ProFTPD下子目录会继承父目录的属性, 这就意味着用在<Directory></Directory>标记间的Limit指令不仅会控制指定目录的访问权限而且会控制 该目录下的所有子目录及文件的访问权限。Limit可以用来限制某个目录下的命令,但是不可以覆盖目录的系统权限。也就是说Linux系统权限仍然起作 用。如果设置了目录test的<Limit>允许写,但是该用户对test目录只有读权限,这时该用户就不能向test目录写入。
在<Limit></Limit>标记块中,除了可以使用Allow、Deny、Order指令外,还可以使用 AllowUser、AllowGroup、AllowAll、AllowClass、DenyUser、DenyGroup、DenyAll和 DenyClass等指令。
5、实例
下面就来举几个例子说明上述指令的用法:
1、 指定某个目录只能由管理员删除,其他用户只能上传下载
<Directory /path/to/dir>
<Limit DELE>
AllowUser ftpadm
DenyAll
</Limit>
</Directory>
2、 指定某台主机对某个目录的访问权限
<Directory "/path/to/dir ">
<Limit WRITE>
DenyAll
</Limit>
<Limit WRITE>
Order allow,deny
Allow from 192.168.1.93
Deny from all
</Limit>
<Limit READ>
Order allow,deny
Allow from 192.168.1.96
Allow from 192.168.1.93
Deny from all
</Limit>
</Directory>
这里实现了主机192.168.1.93对目录/path/to/dir有读写权限,而主机192.168.1.96只有只读权限。在这里需要说明的是, 在<Directoryt></Directory>块中所有的命令默认都是允许的。上面的例子中首先对所有用户关闭WRITE 命令,然后再对指定的主机打开相应的命令。这里注意<Limit READ>下的Allow from 192.168.1.93语句,如果删除这条语句那么主机192.168.1.93在该目录下就不可以下载,也就是说主机192.168.1.93就会没 有READ权限。即使你在<Limit WRITE>里加上READ(<Limit READ WRITE>)也不行。
3、 只允许匿名用户登录
<Limit LOGIN>
DenyAll
</Limit>
<Anonymous ~ftp>
<Limit LOGIN>
AllowAll
</Limit>
</Anonymous>
LOGIN命令用来限制登录,该命令对于<Directory>块是无效的。像下面这种使用方式是无法工作的:
<Directory /some/path>
<Limit LOGIN>
enyUser foo
</Limit>
</Directory>
6、总结
最后总结一下:
继承性 :子目录会继承其父目录的属性。
优先级 :优先级由大到小的顺序:
原始FTP命令(LIST DELE等) > 命令组(DIRS READ WRITE) > ALL关键字
访问控制的应用顺序 :不论出现顺序如何,先应用拒绝(Deny),后应用允许(Allow)
系统权限 :Linux系统权限仍然起作用。如果设置了目录test的<Limit>允许写,但是该用户对test目录只有读权限,这是该用户就不能向test目录写入。
默认值 :在<Directory></Directory>块中,默认是允许所有的命令和操作。
更多内容请看:http://www.armjishu.com/bbs/viewtopic.php?id=1716&flag=412
ProFTPD复杂权限的设置
最新推荐文章于 2023-04-02 18:36:17 发布