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/

Attachment: signature.asc
Description: PGP signature

Reply via email to