linuxでディレクトリやファイルの権限をまとめて変更する!(find/xargs/chmod)

セキュリティ対策などで、ディレクトリやファイルの権限をまとめて変更する方法です。

xargsコマンドを活用する!

findコマンドを使用する場合は、xargコマンドとセットで使用する子が多いです。xargsコマンドは、標準入力から入力されたリストをコマンドの引数に指定して実行するコマンドです。本稿でも積極に使用していきます。ただ、入力なしの場合、引数なしとなり、挙動が異なるコマンドを扱う際には、いきなり変更のコマンドを実行しないように注意が必要です。

ファイル名でファイルを検索する!

ファイル名でファイルを検索するときは、「-name」オプションを使用します。ワイルドカードも使用できます。以下、「hostname」というファイルを探す例です。

$ sudo find / -name hostname

※ディレクトリも表示されます。

特定のサイズ以上のファイルを検索する!

サイズを指定してファイルを検索する場合は、「-size」オプションを使用します。以下は、1GB以上のファイルを探す例です。

sudo find / -size +1G | xargs ls -l

特定の経過時間を指定してファイルを検索する!

特定の経過期間を指定してファイルを検索する場合は、「-mtime」オプションを使用します。以下は、1日以内に変更されたファイルを表示する例です。

$ sudo find /tmp -mtime -1 -type f | xargs ls -l

ディレクトリの権限を指定するとファイルの権限も・・・

ディレクトリやファイル権限は、「chmod -R」コマンドでまとめて変更できますが、よくあるのがディレクトリは「775」、ファイルは「664」など分けて変更したいケースです。この場合は単純に「chmod -R」すると、ディレクトリもファイルも同じ権限になってしまいます。以下は、/tmp配下のディレクトリやファイルを探す例になります。

findコマンドで変更する!

1つ目の解決策は、findコマンドでディレクトリとファイルを指定して変更する方法です。

$ find /tmp -type d | xargs chmod 775
$ find /tmp -type f | xargs chmod 664

特定の権限のみを変更する!

ディレクトリ、ファイルともに特定の権限を追加および変更する場合は、「chmod -R」を使用できます。以下は、/tmpディレクトリ配下ののotherの書き込み権限を削除する例です。

# chmod -R o-w /tmp

おわりに

linuxでは、ディレクトリ配下の全てのディレクトリとファイルの権限を変更するには、ひと工夫必要です。セキュリティ対策等で変更するときに活用してみましょう。

関連記事

関連書籍(Amazon)