限制和保留许可证
编写一个限制脚本
限制脚本对于管理全站点的 Mathematica 的安装非常有用.它们可以用来防止网络上未经授权的用户访问 Mathematica,并且保证对于特定用户许可证的可用性. 限制脚本跨平台兼容,支持 IPv4 和 IPv6,提供了不明确的控制,并且无需编程经验就可以编写. 限制脚本的语法与用于控制对 HTML 文件的访问的网页服务器中使用的 .htaccess 文件十分相似.
保留的许可证始终被保留. 所有其它的用户或者机器无法访问它们,不论是否正在使用它们. 即使没有一个指定的用户或者机器正在运行 Mathematica,所有其它用户和机器的许可证集实际上被保留的许可证的数量减少了.
一个典型的限制脚本的布局如下所示. 限制脚本的样本遵循该定义.
AuthName Sample
AuthGroupFile mathlmgroup.txt
# Precedence
order ( allow,deny | deny,allow )
# Machine restriction
allow from ( all | machines ... )
allow hostgroup machinegroups ...
deny from ( all | machines ... )
deny hostgroup machinegroups ...
# User restriction
allow user ( all | users ... )
allow group usergroups ...
deny user ( all | users ... )
deny group usergroups ...
# License reservation
reserve [count] from machines ...
reserve [count] hostgroup machinegroups ...
reserve [count] user users ...
reserve [count] group usergroups ...
reservesub [count] user users ...
reservesub [count] group usergroups ...
定义术语
下面是用来保留和限制 Mathematica 许可证的术语.
名称 | 描述 |
| AuthName Sample | 定义脚本名称. |
| AuthGroupFile mathlmgroup.txt | 指定包含用户群或者机器群的定义文件. 此行仅在与 group 或者 hostgroup 关键词结合时需要. |
| order ( allow,deny | deny,allow ) | 定义这两个指令的优先级.后面的术语优先于前面的术语. 并且把默认访问状态设为后面的术语. 默认访问状态应用于不匹配明确规则的请求. 默认值为 order deny,allow. |
| allow from ( all | machines ... ) | 允许来自列出的主机名、域、IP 地址和 IP 地址范围的许可证请求. |
| allow hostgroup machinegroups ... | 允许来自列出的机器群成员的许可证请求. |
| deny from ( all | machines ... ) | 否决来自列出的主机名、域、IP 地址和 IP 地址范围的许可证请求. |
| deny hostgroup machinegroups ... | 否决来自列出的机器群的成员的许可证请求. |
| allow user ( all | users ... ) | 允许来自列出用户的许可证请求. |
| allow group usergroups ... | 允许来自列出用户群的许可证请求. |
| deny user (all | users ... ) | 否决来自列出的用户的许可证请求. |
| deny group usergroups ... | 否决来自列出的用户群的成员的许可证请求. |
| reserve [count] from machines ... | 对于每个列出的主机、域、IP 地址和 IP 地址范围,保留 count 前端许可证和 count 内核许可证. |
| reserve [count] hostgroup machinegroups ... | 对列出的机器群的每个成员保留 count 前端许可证和和 count 内核许可证. |
| reserve [count] user users ... | 对于每个列表中的用户保留 count 前端许可证和 count 内核许可证. |
| reserve [count] group usergroups ... | 对于列出的用户群的每个用户,保留 count 前端许可证和 count 内核许可证. |
| reservesub [count] from machines ... | 对于每个列出的主机、域、IP 地址和 IP 地址范围,保留 count 子前端许可证和 count 子内核许可证. |
| reservesub [count] hostgroup machinegroups ... | 对于列出的机器群的每个成员,保留 count 子前端许可证和 count 子内核许可证. |
| reservesub [count] user users ... | 对于列表中的每个用户,保留 count 子前端许可证和 count 子内核许可证. |
| reservesub [count] group usergroups ... | 对于列出的用户群,保留 count 子前端许可证和 count 子内核许可证. |
上面的所有限制脚本指令自动支持 IPv4 和 IPv6 环境,而不需要额外的配置.
许可证保留(License Reservations)
reserve 和 reservesub 指令允许用户确保对于特定用户或者机器许可证的可用性. 重要的是要注意到,保留的许可证总是被保留,并且对于所有其它用户或者机器是无法访问的.
在某些情况下,可能有必要保留不相等的前端和内核许可证. 这可以通过使用下面额外指令来实现:reservefe、reservesubfe、reservekernel 和 reservesubkernel. reservefe 和 reservekernel 的语法和 reserve 的语法以及 reservesubfe 的语法相同,而且 reservesubkernel 和 reservesub 的语法相同.
子进程保留,如 reservesub、reservesubfe 和 reservesubkernel 当对于并行或者网格计算保留内核和前端时是必要的.假设在网络上的用户需要 16 个并行内核来对一个大数据集建模. 使用 reservesubkernel 指令,以防止其他用户无意中破坏建模过程.
限制脚本示例
不使用群的脚本
下面脚本将拒绝从 user1 和 hostname1 的 Mathematica 许可证请求. 从所有其它用户和机器的许可证请求将被允许.
下面脚本将只允许范围在 192.168.2.1 和 192.168.2.12 之间从 user1 到 user5 的许可证请求. 从任何其它用户或者机器的许可证请求将被否决.
AuthName Sample2
order deny,allow
deny from all
allow from [192.168.2.1 192.168.2.12] 192.168.0.1 192.168.0.5
deny user all
allow user user1 user2 user3 user4 user5
使用群(Groups)的脚本
下面脚本施加了与前面脚本相同的限制,但是用户和机器通过群(groups)和主机群(hostgroups)来指定.
AuthName Sample3
AuthGroupFile mathlmgroup1.txt
order deny,allow
deny from all
allow hostgroup group1
deny user all
allow group group2 group3
这是文件 mathlmgroup1.txt. 它定义了一个机器群和两个用户群.
group1: 192.168.0.1 192.168.0.5 [192.168.2.1 192.168.2.12]
group2: user1 user2 user3
group3: user4 user5
演示默认访问状态的脚本
下面脚本将允许从所有用户和所有机器的许可证请求,除了 host1. 如果 user1 在登录到 host1 时请求一个许可证,请求将被批准. 该请求与脚本中的两个规则匹配,但是 order 指令值指明了 allow 指令具有优先级. 请注意,从 user2 登录到 host1 的许可证请求将被否决.
order 指令的值是前面脚本和下面脚本的唯一区别,但是脚本的意思正好相反. 该脚本仅允许从 user1 的许可证请求. 从 user1 登陆到 host1 的许可证请求将被拒绝. 这种请求匹配两种规则,但是由于 deny 规则具有优先级,该请求将被拒绝.
使用许可证保留的脚本
下面脚本允许所有许可证请求.它为地址 192.168.0.1 保留三个内核许可证,以及为 user1 保留一个前端许可证和一个内核许可证. 这些许可证总是被保留,并且对于所有其它机器或者用户不可访问.
AuthName Sample6
order allow,deny
allow from all
allow user all
reservekernel 3 from 192.168.0.1
reserve user user1
下面脚本将允许所有许可证请求.它为 user1 保留两个前端许可证,两个内核许可证和四个内核子进程许可证. 这将确保 user1 对于并行计算有必要的资源. 请参阅 "Parallel Computing Tools User Guide" 以获得并行计算的更多信息.
AuthName Sample7
order allow,deny
allow from all
allow user all
reservefe 2 user user1
reservekernel 2 user user1
reservesubkernel 4 user user1
下面脚本将只允许从 user1、user2、hostname1、hostname2、domain1.com,和在地址范围从 192.168.1.1 到 192.168.2.9 的许可证请求. 它为 hostname2 保留三个内核许可证和三个前端许可证,为从 192.168.1.1 到 192.168.2.9 的地址保留另外三个内核许可证和三个前端许可证,为 user1 保留一个内核许可证和一个前端许可证,为 user2 保留一个内核许可证和一个前端许可证. 在该脚本中,一共有八个前端许可证和八个内核许可证被保留.
AuthName Sample8
order deny,allow
deny from all
allow from hostname1 hostname2 .domain1.com [192.168.1.1 192.168.2.9]
deny user all
allow user user1 user2
reserve 3 from hostname2 [192.168.1.1 192.168.2.9]
reserve user user1 user2
如果用户注意到 reserve 的第一个实例也可以以下面形式写出,可能比较容易想象被限制在 Sample8 中的许可证数量.
reserve 3 from hostname2
reserve 3 from [192.168.1.1 192.168.2.9]
使用许可证保留和群的脚本
下面脚本施加与 Sample6 脚本同样的限制和保留(reservations),但是用户和机器经过群(groups)和主机群(hostgroups)来指定.
AuthName Sample9
AuthGroupFile mathlmgroup2.txt
order deny,allow
deny from all
allow hostgroup group1 group2
deny user all
allow group group3
reservekernel 3 hostgroup group2
reserve group group3
这是文件 mathlmgroup2.txt. 它定义了两个机器群和一个用户群.
使用限制脚本
若要使用限制脚本,使用带有脚本路径的 -restrict 选项运行 MathLM. 用户可以对限制脚本给出任意想要的文件名(以及扩展名). 请参阅 "启动 MathLM" 以获得命令行选项的更多详细信息.
如果限制脚本或者 AuthGroupFile 被更改,MathLM 必须重新启动.
