os: on Windows, Chmod acts on symlinks rather than the symlink target #71492
Labels
NeedsInvestigation
Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone
Given a symlink "symlink" pointing to "file", on Unix systems
os.Chmod("symlink", mode)
will change the mode of "file".On Windows, it will change the mode of "symlink". The only mode bit
Chmod
pays attention to on Windows is 0o200 (user-writable), which it uses to set theFILE_ATTRIBUTE_READONLY
attribute. So far as I can tell, settingFILE_ATTRIBUTE_READONLY
on a symlink doesn't seem to do much. (It might prevent changing the link target? It doesn't prevent writing to the linked-to file, however.)I have no idea what we should be doing here, but I suppose maximum consistency with Unix would be to resolve symlinks and apply the attribute change to the link target.
I discovered this while implementing
os.Root.Chmod
on Windows, where I need to decide between being consistent with the currentos.Chmod
behavior on Windows or consistent with the Unix behavior./cc @qmuntal
The text was updated successfully, but these errors were encountered: