-
- Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
Description
Component
chmod
Description
In Chmoder::chmod()
if !file.exists() { // ......... }Path::exists() is used to determine whether a file is existed. Because Path::exists() will return false when there is a metadata access errors, including PermissionDenied, it can misclassify existing but inaccessible paths as non-existent, producing incorrect result.
Test / Reproduction Steps
core_sbx$ sudo mkdir locked core_sbx$ sudo touch locked/file core_sbx$ sudo chmod 000 locked core_sbx$ ../../coreutils/target/release/chmod 000 locked/file ../../coreutils/target/release/chmod: cannot access 'locked/file': No such file or directory core_sbx$ chmod 000 locked/file chmod: cannot access 'locked/file': Permission deniedImpact
Behavioral divergence from GNU coreutils: scripts and tooling may treat No such file differently from Permission denied.