Subject: Re: chmod(1) and '+X'
To: None <jschauma@netmeister.org>
From: Ben Harris <bjh21@netbsd.org>
List: tech-userlevel
Date: 01/13/2004 18:07:57
[ This has been on my "really must reply to this" pile for weeks. Sorry. ]
In article <20031213164749.GA27940@netmeister.org> you write:
>I just come across this discrepancy between the manual page and real
>life:
>
>chmod(1)'s manual page states:
>
> The perm symbols represent the portions of the mode bits as
> follows:
>
> X The execute/search bits if the file is a
> directory or any of the execute/search bits are set
> in the original (unmodified) mode. Operations with
> the perm symbol ``X'' are only meaningful in conjun-
> ction with the op symbol ``+'', and are ignored in
> all other cases.
[...]
>So, it seems that 'X' is not ignored, but instead the op symbol is
>ignored if 'X' is specified and chmod(1) behaves as if '+' had been
>given as the op symbol.
>
>GNU chmod(1) doesn't say that 'X' is ignored unless the operator is '+',
>and behaves as you would expect. Irix' chmod man pages says that it
>does ignore 'X' unless '+' is specified, but behaves as the GNU chmod.
>
>So... should our chmod be changed to behave as GNU chmod?
I think so, yes. POSIX says:
# The perm symbol X shall represent the execute/search portion of the file
# mode bits if the file is a directory or if the current (unmodified) file
# mode bits have at least one of the execute bits (S_IXUSR, S_IXGRP, or
# S_IXOTH) set. It shall be ignored if the file is not a directory and none
# of the execute bits are set in the current file mode bits.
That matches the first sentence of our documentation -- the second sentence
is wrong and should be deleted, and chmod should then be made to do what the
documentation says.
--
Ben Harris <bjh21@NetBSD.org>
Portmaster, NetBSD/acorn26 <URL:http://www.NetBSD.org/Ports/acorn26/>