シンボリックリンクがあるとしましょう。
linktob -> b
同様のコマンドを実行すると、find . -type l -execdir chmod 777 {} \;
このchmod
コマンドはシンボリックリンクが指すファイル「b」に影響します。
マニュアルページには基本的にシンボリックリンクに従わないと記載されていますが、ここではそうではありません。
-execdir
etcに-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 システムコールはその権限を変更できません。
シンボリックリンクで正確に何をしますか?