first and last characters, and single quotes in the string.
[bug introduced in coreutils-8.26]
+ ls -l may now mark files with a '?' character after the mode bits
+ if it is unable to read alternate access method details, which may
+ happen on NFS with files without read permission.
+ Previously ls would have output "Permission denied" errors.
+ [bug introduced in coreutils-9.4]
+
mv works again with macFUSE file systems. Previously it would
have exited with a "Function not implemented" error.
[bug introduced in coreutils-8.28]
A file with any other combination of alternate access methods
is marked with a @samp{+} character.
+@command{ls} uses a @samp{?} character to indicate it is unable to determine
+whether alternate access methods apply to the file, which may happen for
+example with some NFS setups with files without read permission.
+
@item -n
@itemx --numeric-uid-gid
@opindex -n
enum acl_type
{
ACL_T_NONE,
+ ACL_T_UNKNOWN,
ACL_T_LSM_CONTEXT_ONLY,
ACL_T_YES
};
int n = file_has_aclinfo_cache (full_name, f, &ai, aclinfo_flags);
bool have_acl = 0 < n;
bool have_scontext = !ai.scontext_err;
+
+ /* Let the user know via '?' if errno is EACCES, which can
+ happen with Linux kernel 6.12 on an NFS file system.
+ That's better than a longwinded diagnostic. */
+ bool cannot_access_acl = n < 0 && errno == EACCES;
+
f->acl_type = (!have_scontext && !have_acl
- ? ACL_T_NONE
+ ? (cannot_access_acl ? ACL_T_UNKNOWN : ACL_T_NONE)
: (have_scontext && !have_acl
? ACL_T_LSM_CONTEXT_ONLY
: ACL_T_YES));
any_has_acl |= f->acl_type != ACL_T_NONE;
- if (format == long_format && n < 0)
+ if (format == long_format && n < 0 && !cannot_access_acl)
error (0, ai.u.err, "%s", quotef (full_name));
else
{
modebuf[10] = '.';
else if (f->acl_type == ACL_T_YES)
modebuf[10] = '+';
+ else if (f->acl_type == ACL_T_UNKNOWN)
+ modebuf[10] = '?';
switch (time_type)
{