bug#81542: ['stat' command] Permission bits in octal not displayed in four-digit format when invoked with 'stat -c %a'

Pádraig Brady <[email protected]> Mon, 3 Aug 2026 12:33:01 +0100
Newsgroups gmane.comp.gnu.core-utils.bugs
Message-ID <[email protected]>
On 03/08/2026 11:44, Ricky Tigg wrote:
> coreutils v. 9.11
> 
> Hello. Permission bits in octal not displayed in four-digit format when
> invoked with 'stat -c %a' unlike it does with 'stat' alone.
> 
> manual STAT(1)
> 
> "The valid format sequences for files (without --file-system):
> 
>   %a  permission bits in octal (see '#' and '0' printf flags)"
> 
> note: command filtered
> 
> $ stat /etc/{shadow,passwd}
>   File: /etc/shadow
> Access: (0000/----------)  Uid: (0/root)   Gid: (0/root)
> 
>   File: /etc/passwd
> Access: (0644/-rw-r--r--)  Uid: (0/root)   Gid: (0/root)
> 
> Four-digit permission bits in octal.
> 
> $ stat -c '%a/%A %u/%U %g/%G %n' /etc/{shadow,passwd} | column -t
> 0/----------    0/root  0/root  /etc/shadow
> 644/-rw-r--r--  0/root  0/root  /etc/passwd
> 
> Not four-digit permission bits in octal. In the worse case it is not even
> three-digit permission bits in octal.
> 
> Expected: Permission bits in octal displayed in four-digit format when
> invoked with 'stat -c %a' like it does with 'stat' alone.

Well we give configurability when using format chars,
through the mentioned '0' and '#' flags.  See:
https://github.com/coreutils/coreutils/commit/a0c5313d6

E.g.:

   $ stat -c '%a %04a %#a %#03a' /etc/shadow .
   0 0000 0 000
   711 0711 0711 0711

I'm not sure it's worth changing the default at this stage.

Padraig