Hi Andreas,

> +#define RICHACE_OWNER_SPECIAL_ID     0
> +#define RICHACE_GROUP_SPECIAL_ID     1
> +#define RICHACE_EVERYONE_SPECIAL_ID  2
> +
> +struct richace {
> +     unsigned short  e_type;
> +     unsigned short  e_flags;
> +     unsigned int    e_mask;
> +     union {
> +             kuid_t          uid;
> +             kgid_t          gid;
> +             unsigned int    special;
> +     } e_id;
> +};
> +
> +struct richacl {
> +     atomic_t        a_refcount;
> +     unsigned int    a_owner_mask;
> +     unsigned int    a_group_mask;
> +     unsigned int    a_other_mask;
> +     unsigned short  a_count;
> +     unsigned short  a_flags;
> +     struct richace  a_entries[0];
> +};

Is that also the on disk representation?

I'm wondering if the size of an ace should be dynamic,
which might make it possible to support other ace types
in future. E.g. supporting other identities like 128-bit values
to make it easier to map Windows SIDS.

Even without 128-bit ids, it would be very useful to mark an
ace so that it applies to a uid or gid at the same time.
This would reduce the size of the ace list when Samba uses
IDMAP_TYPE_BOTH, which means a SID is mapped to a unix id, which
is user (uid) and group (gid) at the same time. This feature is required
in order to support SID-Histories on accounts.
Currently Samba needs to add two aces (one uid and one gid)
in order to represent one Windows ace.

I haven't looked at the claims based acls on Windows, but it would be
good if the new infrastructure is dynamic enough to support something
like that in a future version.

Thanks very much on your persistent to bring richacls forward!

metze

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to