uutils/coreutils
Ver no GitHubchmod: behavioral divergence from coreutils when the target file is not accessible
Open
#9.789 aberto em 23 de dez. de 2025
U - chmodgood first issue
Métricas do repositório
- Stars
- (23.246 stars)
- Métricas de merge de PR
- (Mesclagem média 9d 14h) (216 fundiu PRs em 30d)
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 denied
Impact
Behavioral divergence from GNU coreutils: scripts and tooling may treat No such file differently from Permission denied.