具体的访问规则将覆盖一般访问规则。应用以下两条规则之后,所有用户都可以向所有队列发送消息,但是 Bob 不能向 tq1 发送消息。
queue.*.produce.allow.user=* queue.tq1.produce.deny.user=Bob
指定给明确 principal 的访问权限将覆盖指定给 * principal 的访问权限。以下规则将拒绝 Bob 向 tq1 发送消息,但允许其他人发送。
queue.tq1.produce.allow.user=* queue.tq1.produce.deny.user=Bob
用户的 * principal 规则将覆盖组的对应 * principal 规则。例如,以下两条规则将允许所有通过验证的用户向 tq1 发送消息。
queue.tq1.produce.allow.user=* queue.tq1.produce.deny.group=*
授予用户的访问权限将覆盖授予用户所属组的访问权限。在以下示例中,即使 Bob 是 User 的成员,他也不能生成发送到 tq1 的消息。User 的其他所有成员都可以生成此类消息。
queue.tq1.produce.allow.group=User queue.tq1.produce.deny.user=Bob
任何未通过访问规则明确授予的访问权限均默认为被拒绝。例如,如果 ACL 文件不包含任何访问规则,则所有用户的所有操作都将被拒绝。
如果同时允许和拒绝同一个用户或组的访问权限,则访问权限将相互抵消。例如,以下两条规则将使 Bob 无法浏览 q1:
queue.q1.browse.allow.user=Bob queue.q1.browse.deny.user=Bob
以下两条规则将阻止 User 组使用 q5 中的消息。
queue.q5.consume.allow.group=User queue.q5.consume.deny.group=User
如果多条规则等号左侧的内容都相同,则只有最后一条规则起作用。