Re: Change getfacl to print ACL group: (and user:) entries using %u instead of %d?

Rick Macklem <[email protected]> Fri, 22 May 2026 05:46:00 -0700
Newsgroups gmane.os.freebsd.devel.hackers
Message-ID <CAM5tNy5j9+ztj6z5FSeJ2ai-J3-R-wHm44cLDcxfy9vha2Qp2A@mail.gmail.com>
On Fri, May 22, 2026 at 4:25 AM Peter Eriksson <[email protected]> wrote:
>
> Ran into this the other day (also reported as bug 295444):
>
> # mkdir testdir
>
> # chgrp 3000000005 testdir
>
> # setfacl -x 1 -a 1 group:3000000005:full_set:fd:allow testdir
>
> # getfacl testdir
> # file: testdir
> # owner: root
> # group: 3000000005
>             owner@:rwxpDdaARWcCos:fd-----:allow
>  group:-1294967291:rwxpDdaARWcCos:fd-----:allow
>
>
> Looking at the code in /usr/src/lib/libc/posix1e/acl_to_text_nfs4.c it isn't so surprising:
>
>                 if (grp == NULL)
>                         snprintf(str, size, "group:%d", (unsigned int)*id);
>                 else
>                         snprintf(str, size, "group:%s", grp->gr_name);
>
> (and similar for user:)
>
> uid_t/gid_t are an unsigned 32bit integers on most (all?, at least FreeBSD, Linux, MacOS & Solaris) modern Unix systems, so should be printed using "%u" instead… (In my opinion).
>
>
> The current code makes it difficult to use scripts to extract ACL entries and copy them correctly to new files:
>
> # mkdir newdir
> # getfacl testdir | setfacl -b -n -M - newdir
> setfacl: malformed ACL: unknown user or group name "-1294967291"
> setfacl: -: get_acl_from_file() failed: Invalid argument
>
>
>
> Which is due to it being impossible to set it using the "signed" variant:
>
> # setfacl -x 1 -a 1 group:-1294967291:full_set:fd:allow td
> setfacl: malformed ACL: unknown user or group name "-1294967291"
>
>
> A quick look in the acl_id_to_name.c file used for POSIX ACLs seems to indicate similar %d usage.
>
>
> I think the right way to fix this is to change %d to %u when printing uid_t & gid_t in ACL entries (and since most people are sane enough to not use uid/gid's over 2 billion not many will have noticed this :-).

Sounds reasonable to me. If you put the patch up on reviews.freebsd.org,
I can review it and then commit it (of course, you can select other
reviewers, if you'd like).

rick

>
> - Peter