Tavian Barnes <taviana...@tavianator.com> wrote: > --- > libutil/mode.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libutil/mode.c b/libutil/mode.c > index b3632ad..2754be7 100644 > --- a/libutil/mode.c > +++ b/libutil/mode.c > @@ -40,10 +40,10 @@ next: > who |= S_IRWXG|S_ISGID; > continue; > case 'o': > - who |= S_IRWXO; > + who |= S_IRWXO|S_ISVTX; > continue; > case 'a': > - who |= S_IRWXU|S_ISUID|S_IRWXG|S_ISGID|S_IRWXO; > + who |= S_IRWXU|S_ISUID|S_IRWXG|S_ISGID|S_IRWXO|S_ISVTX; > continue; > } > break;
Thanks for catching this. POSIX says this on the matter: > The perm symbol t shall specify the S_ISVTX bit. When used with > a file of type directory, it can be used with the who symbol a, > or with no who symbol. It shall not be an error to specify a who > symbol of u, g, or o in conjunction with the perm symbol t, but > the meaning of these combinations is unspecified. So indeed a "who" of 'a' should include S_ISVTX. But it also says that o with t is unspecified. Can you give some context about the motivation for including S_ISVTX? Is it to match other existing implementations? Or maybe there is some common use-case for o+t?