hosts.allow和hosts.deny访问控制文件里面的规则一般是:
daemon_list : client_list [ : shell_command ]
其中daemon_list是一个或者数个daemon进程名,可以使用通配符;client_list是一个或者数个客户端主机名或者IP,可以使用通配符号。
daemon_list可以使用两个特殊符号:ALL和EXCEPT。ALL表示所有的进程,而EXCEPT表示排除某个情况。比如:
ALL EXCEPT in.fingerd
表示除了in.fingerd外所有的进程。
client_list可以使用一些通配符:
.号在字符串前匹配所有后面部分和所提供字符串一样的主机名。比如:
.tue.nl可以匹配wzv.win.tue.nl或者linux.tue.nl。
.号在字符串后匹配所有以所提供字符串开头的地址,比如:
131.155.可以匹配所有131.155.xxx.xxx的地址。
也可以使用n.n.n.n/m.m.m.m的格式来表示net/mask,比如:
131.155.72.0/255.255.254.0匹配从131.155.72.0到131.155.73.255的地址。
以/号开头的字符串将被看作一个文件处理,它匹配所有在这个文件中列出的主机名或者地址。
@开头的串将被当作一个NIS组的名字。
ALL表示所有的主机,LOCAL匹配所有机器名中不带.号的主机。EXCEPT表示排除某些主机。
比如在hosts.allow里面有一行:
ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
表示允许除了主机名叫terminalserver.foobar.edu以外所有.foobar.edu域内的机器都可以访问所有的服务。
而在hosts.deny
ALL EXCEPT in.fingerd:192.168.0.0/255.255.255.0
则表示禁止192.168.0.1到192.168.0.254的机器访问除了in.fingerd以外的服务。