findコマンドを使って、パーミションを一括で変更する

find + chmod コマンドでパーミション変更

前回の記事「所有者を指定してファイル・ディレクトリを探す方法」で、findを利用してファイル・ディレクトリの所有者を探す方法を紹介しています。今回は、findコマンドでパーミションを変更する対象のファイルやディレクトリを検索して、chmodコマンドで一括でパーミション変更する方法を紹介します

特定のディレクトリにある、ファイルのパーミションを一括変更

下記では、「/var/www/html」以下にあるファイルのパーミションを「644」属性に変更しています

$ find /var/www/html/ -type f -print | xargs chmod 644
# または
$ find /var/www/html/ -type f -exec chmod 644 {} \;

下記の場合は、「/var/www/html」以下にあるファイルで所収者が「admin」のファイルのパーミションを「664」属性に変更しています。

WEBディレクトリで、apcheグループにadminユーザーが設定している場合に、パーミションの関係でグループ上書きできなかったりする場合に「664」にしたい場合に役に立つと思います

$ find /var/www/html/ -user admin -type f -print | xargs chmod 664
# または
$ find /var/www/html/ -user admin -type f -exec chmod 664 {} \;

特定のディレクトリにある、ディレクトリのパーミションを一括変更

下記では、「/var/www/html」以下にあるディレクトリのパーミションを「755」属性に変更しています

$ find /var/www/html/ -type d -print | xargs chmod 755
# または
$ find /var/www/html/ -type d -exec chmod 755 {} \;

特定のディレクトリにある特定の拡張子のファイルのパーミションを一括変更

下記では、「/var/www/html」以下にある「cgi」ファイルのパーミションを「755」または実行権限を付与するように変更しています

$ find /var/www/cgi-bin/ -name \*.cgi | xargs chmod 755
# または
$ find /var/www/cgi-bin/ -name \*.cgi -exec chmod 755 {} \;

# chmod 755ではなく、chmod +x で実行権限のみ付与する場合
$ find /var/www/cgi-bin/ -name \*.cgi | xargs chmod +x
# または
$ find /var/www/cgi-bin/ -name \*.cgi -exec chmod +x {} \;

 

スポンサーリンク