Fix file_copy(overwrite = TRUE) EPERM when destination is owned by another user#502
Draft
Fix file_copy(overwrite = TRUE) EPERM when destination is owned by another user#502
file_copy(overwrite = TRUE) EPERM when destination is owned by another user#502Conversation
…y other users When overwrite=TRUE, uv_fs_copyfile internally calls fchmod() which requires file ownership. Unlink the destination first so that fchmod() succeeds on the freshly-created file owned by the current user. Co-authored-by: jeroen <216319+jeroen@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix file_copy permission problem with overwrite
Fix Mar 3, 2026
file_copy(overwrite = TRUE) EPERM when destination is owned by another user
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
file_copy(overwrite = TRUE)fails with[EPERM]and corrupts the destination when the file is owned by a different user — even if the current user has write permission via group membership. The underlyinguv_fs_copyfilecallsfchmod()internally to mirror the source's permissions, andfchmod()requires ownership, not just write access.Changes
src/file.cc: Before callinguv_fs_copyfilewhenoverwrite = TRUE, unlink the destination first. The resulting fresh file is owned by the current user, sofchmod()succeeds.ENOENTfrom the unlink is silently ignored; other errors are propagated.tests/testthat/test-copy.R: Add test assertingfile_copy(overwrite = TRUE)correctly replaces an existing file's content.NEWS.md: Document the fix.This matches the behavior of
cpand mirrors the existing approach inlink_copy.Original prompt
file_copywithoverwrite = TRUEpermission problem #499✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.