小ネタです。
経緯
何も設定していないWSL上で普通のLinuxみたいに開発していたらパーミッションが 777
になってしまいます。
これを避ける設定として以下のような設定があります。
wsl.conf
を設定して、
$ cat <<EOF | sudo tee -a /etc/wsl.conf [automount] options = "metadata" EOF
WSLを再起動。
> wsl --shutdown
PC交換後にこれを忘れていて気付いたらパーミッションが全部777になっていました。
本題
特定のディレクトリやファイルを、umaskの値にリセットする方法です。NTFSマウントしているディレクトリだとファイル数によっては、それなりに処理の時間がかかります。
umask 022 TARGET_PATH=~/my/dir/ # ディレクトリのパーミッションをumaskの値にリセット mkdir base_dir find ${TARGET_PATH} -type d -exec chmod --reference ./base_dir {} \; rm -fR ./base_dir # ファイルのパーミッションをumaskの値にリセット touch base_file find ${TARGET_PATH} -type f -exec chmod --reference ./base_file {} \; rm -f ./base_file