如何比较 POSIX 个 ACL?

How to compare POSIX ACLs?

给定两个 acl_t 值,我如何比较它们?也就是说,我需要一种方法来确定一个 acl_t 是否比另一个具有更多或更少的条目,或者给定的 acl_entry_t 是否包含与另一个不同的权限集。

Linux 确实有非标准的 acl_cmp 函数。我需要的基本上是此函数的 POSIX 兼容变体。

到目前为止我想到的唯一想法是比较 ACL 的文本表示:

strcmp(acl_to_text(acl1), acl_to_text(acl2))

还有更高效的解决方案吗?

由于 acl_t 是不透明类型,客户端代码无法实现 acl_cmp。此外,使用 strcmp(acl_to_text(acl1), acl_to_text(acl2)) 也不能依赖,因为 ACL 可能是等效的,但排序顺序不同。

我得出的结论是,这个函数和其他一些函数应该最终成为标准,但不幸的事件方式导致了它的废弃状态。