Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chmod: passing multiple modes with leading hyphens. #3147

Open
Tracked by #3336
tertsdiepraam opened this issue Feb 16, 2022 · 1 comment
Open
Tracked by #3336

chmod: passing multiple modes with leading hyphens. #3147

tertsdiepraam opened this issue Feb 16, 2022 · 1 comment

Comments

@tertsdiepraam
Copy link
Member

GNU chmod has some... ehh... interesting behaviour when it comes to leading hyphens in the mode:

chmod -w -w f

changes the permissions of f (and not of a file called -w). uutils simply throws an error because it does not expect the flag -w.

On the other hand,

chmod a-w a-w f

does try to change the permissions of a-w and f.

However, this behaviour changes when the -w is passed after --, because

chmod -- -w -w f

tries to modify both -w and f. This case is currently handled correctly in uutils, but I still included it here, because it is likely to break for some naive solutions to this issue.

All this is tested in the chmod/usage.sh tests from GNU. The cases tested there are listed below, where the provided arguments are on the left, followed by a colon and the files that it will try to chmod:

--         :
-- --      :
-- -- -- f : -- f
-- -- -w f : -w f
-- -- f    : f
-- -w      :
-- -w -- f : -- f
-- -w -w f : -w f
-- -w f    : f
-- f       :
-w         :
-w --      :
-w -- -- f : -- f
-w -- -w f : -w f
-w -- f    : f
-w -w      :
-w -w -- f : f
-w -w -w f : f
-w -w f    : f
-w f       : f
f          :
f --       :
f -w       : f
f f        :
u+gr f     :
ug,+x f    :
@sylvestre
Copy link
Contributor

Simple testcase:

touch f
chmod -w -w -- f 
./target/debug/coreutils chmod -w -w -- f 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants