Skip to content

os: on Windows, Chmod acts on symlinks rather than the symlink target #71492

@neild

Description

@neild

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 the FILE_ATTRIBUTE_READONLY attribute. So far as I can tell, setting FILE_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 current os.Chmod behavior on Windows or consistent with the Unix behavior.

/cc @qmuntal

Metadata

Metadata

Assignees

No one assigned

    Labels

    NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.OS-Windows

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions