find -execdirがシンボリックリンクをたどるのを防ぐ方法は?

find -execdirがシンボリックリンクをたどるのを防ぐ方法は?

シンボリックリンクがあるとしましょう。

linktob -> b

同様のコマンドを実行すると、find . -type l -execdir chmod 777 {} \;このchmodコマンドはシンボリックリンクが指すファイル「b」に影響します。

マニュアルページには基本的にシンボリックリンクに従わないと記載されていますが、ここではそうではありません。

-execdiretcに-execシンボリックリンク自体を処理させるにはどうすればよいですか?

答え1

findこの例では、次のコマンドを表示できます。する実際にはシンボリックリンクで動作します。

$ ls -l *
subdir1:
total 0
-rwxrwxrwx 1 nate nate 0 Jun 13 09:20 realfile

subdir2:
total 0
lrwxrwxrwx 1 nate nate 19 Jun 13 09:20 symlinkfile -> ../subdir1/realfile
$ find . -type l -exec ls "{}" \;
./subdir2/symlinkfile

ただし、基本コマンド(例chmod:)はそうでない可能性があります。この例では、chmodが実際に変更されていることがわかります。ターゲット文書:

$ find . -type l -exec chmod -v 777 "{}" \;
mode of `./subdir2/symlinkfile' retained as 0777 (rwxrwxrwx)
$ find . -type l -exec chmod -v 444 "{}" \;
mode of `./subdir2/symlinkfile' changed from 0777 (rwxrwxrwx) to 0444 (r--r--r--)

$ ls -l *
subdir1:
total 0
-r--r--r-- 1 nate nate 0 Jun 13 09:20 realfile

subdir2:
total 0
lrwxrwxrwx 1 nate nate 19 Jun 13 09:20 symlinkfile -> ../subdir1/realfile

chmodのマニュアルページから:

chmod はシンボリックリンクの権限を変更しません。 chmod システムコールはその権限を変更できません。

シンボリックリンクで正確に何をしますか?

関連情報