URL: <https://savannah.gnu.org/bugs/?66374>
Summary: Permissions errors from unnecessary attemp to read symlink targets Group: findutils Submitter: me_and Submitted: Thu 24 Oct 2024 10:28:00 AM UTC Category: find Severity: 3 - Normal Item Group: None Status: None Privacy: Public Assigned to: None Originator Name: Originator Email: Open/Closed: Open Discussion Lock: Any Release: None Fixed Release: None _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: Thu 24 Oct 2024 10:28:00 AM UTC By: Adam Dinwoodie <me_and> Consider the following command: find "$dir" -type l \! -lname "$path" -xtype l I've been trying to use this to find broken symlinks, but using the `\! -lname "$path"` part to exclude symlinks where the target is in a directory I do not have access to so the `-xtype` test cannot be checked. However, even when the `-lname` test succeeds, `find` produces a "Permission denied" error. Minimal repro below, where everything works as expected until the final `find` command, which I would have expected to produce the same output as the previous command. $ mkdir demo $ sudo chown root:root demo $ sudo chmod 700 demo $ ln -s demo/file symlink $ find symlink -print symlink $ find symlink \! -lname '*/file' -print $ find symlink \! -lname '*/file' -xtype l -print find: ‘symlink’: Permission denied There's a more comprehensive and commented repro in the attached Bash script. Changing the optimisation level seems to make no difference; if you specify -O<n> arguments to the attached demo script then they'll be passed through to the `find` calls. `find --version` output below: find (GNU findutils) 4.9.0 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Eric B. Decker, James Youngman, and Kevin Dalley. Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2) _______________________________________________________ File Attachments: ------------------------------------------------------- Name: demo.sh Size: 3KiB <https://file.savannah.gnu.org/file/demo.sh?file_id=56569> AGPL NOTICE These attachments are served by Savane. You can download the corresponding source code of Savane at https://savannah.gnu.org/source/savane-fe88ab40cb3eb3bf250224c46c17b33c85ea0249.tar.gz _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?66374> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
signature.asc
Description: PGP signature