临时用户或外部供应商需要访问公司的浮动许可证,但不希望他们占用内部员工正常使用的份额——这个需求在实际运维中很常见。
解决这个问题不需要额外的软件,FlexNet的options文件本身就提供了完整的权限控制能力。核心思路就一个:把许可证池划分出一小部分,专门给临时用户用,剩下的留给内部员工。
下面说几种实现方式,按推荐程度排列。
RESERVE是最直接的方式——从许可证池里固定划出几个席位,专门留给特定用户或用户组。被预留的许可证即使临时用户不用,也不会被内部员工占用。
配置步骤:
第一步,在options文件里定义一个临时用户组:
text
GROUP external_users vendor_a vendor_b contractor_c第二步,为这个组预留许可证:
text
RESERVE 3 CAD_Design GROUP external_users这条规则的意思是:从CAD_Design这个feature的总池子里划出3个许可证,专门给external_users组的成员使用。其他人用不了这3个。
RESERVE的关键特性:预留的许可是“独占”的。即使临时用户没有在使用,这3个许可也不会被内部员工占用。所以设置预留数量时要算清楚——划多了内部员工不够用,划少了临时用户不够用。
适用场景:你和外部供应商有长期合作关系,每个月都有固定的人需要访问。预留几个席位,省心。
RESERVE是“划出专用份额”,INCLUDE和EXCLUDE则是 “控制谁能用、谁不能用” 。
场景一:只允许临时用户在特定机器上用
如果你希望临时用户只能在指定的几台机器上使用许可证,可以用INCLUDE配合HOST来实现:
text
INCLUDE CAD_Design HOST contractor-pc1
INCLUDE CAD_Design HOST contractor-pc2这样CAD_Design这个feature只允许从contractor-pc1和contractor-pc2这两台机器上签出。临时用户只能用指定的机器,内部员工不受影响(如果内部员工也需要用,需要把他们也加进去,或者用RESERVE+INCLUDE的组合方案)。

场景二:明确排除特定用户
如果有某个外部供应商的账号不应该占用许可证,直接用EXCLUDE踢出去:
text
EXCLUDE CAD_Design USER bad_vendor场景三:组合使用
RESERVE和INCLUDE可以组合使用。一个典型场景是:为临时用户组预留3个许可,同时限制他们只能在指定的几台机器上使用。
INCLUDE和EXCLUDE的优先级:如果一个用户同时出现在INCLUDE和EXCLUDE列表中,EXCLUDE优先生效。也就是说,“禁止”的优先级高于“允许”。
MAX的作用是限制某个用户或用户组最多能占用多少个许可证。
如果担心某个临时用户“贪心”——在多个机器上同时打开软件、一个人占了多个许可——可以用MAX限制他:
text
MAX 2 CAD_Design USER contractor_a这条规则限制contractor_a最多同时占用2个CAD_Design许可证。
如果要对整个临时用户组做总量限制:
text
MAX 5 CAD_Design GROUP external_users整个external_users组的所有成员加起来,最多占用5个许可证。
MAX和RESERVE的区别:RESERVE是“保证给你留几个”,MAX是“你最多只能用几个”。两者可以同时使用——预留3个给临时组,同时限制每个人最多用1个,这样既保证了临时组有可用资源,又防止了单个人过度占用。
假设你的公司有50个CAD_Design许可证,需要接待3个外部供应商(vendor_a、vendor_b、vendor_c)和2个临时员工(temp1、temp2)。目标是:保证内部员工至少有40个可用,外部人员共享5个,且每人最多用1个。
options文件内容如下:
text
# 定义临时用户组
GROUP external_users vendor_a vendor_b vendor_c temp1 temp2
# 为临时用户组预留5个许可证
RESERVE 5 CAD_Design GROUP external_users
# 限制临时组每人最多用1个
MAX 1 CAD_Design GROUP external_users
# 其他内部员工正常使用剩余的45个(50-5=45)配置完成后:

1. RESERVE会“锁定”许可证
被RESERVE划走的许可证,即使没人用也不会释放给其他人。所以预留数量一定要算清楚——如果临时用户只有3个人,预留5个就浪费了2个。建议根据实际使用情况动态调整。
2. 用户名和组名区分大小写
FlexNet默认对用户名和组名是大小写敏感的。vendor_a和Vendor_A会被当成两个不同的用户。可以在options文件开头加一行GROUPCASEINSENSITIVE ON来关闭大小写敏感。
3. GROUP定义的顺序
GROUP的定义要放在使用它的规则之前。如果先写了RESERVE ... GROUP external_users,再定义GROUP external_users ...,规则不会生效。
4. GROUP可以跨行定义
如果一个组的成员很多,一行写不下,可以用多行GROUP来定义同一个组——所有行里的用户会被合并到同一个组里。
5. 不要跟临时用户共享内部员工的账号
让外部供应商用自己的账号登录,而不是借用内部员工的账号。否则权限控制就失去了意义——你没法区分“内部员工在用”还是“外部供应商在用”。
临时用户访问浮动许可而不影响内部员工,核心就是用好options文件的三把刀:
| 方法 | 作用 | 适用场景 |
|---|---|---|
| RESERVE | 从池子里划出专用份额 | 有固定合作的长期外部人员 |
| INCLUDE/EXCLUDE | 控制谁能用、在哪用 | 临时项目、指定机器访问 |
| MAX | 限制单个用户的最大占用数 | 防止外部人员过度占用 |
这三个方法可以单独用,也可以组合用。大多数场景下,先用GROUP定义临时用户组,再用RESERVE划出专用份额,最后用MAX限制单人占用上限——这三步走完,基本就能把临时用户的访问控制得清清楚楚。