環境
背景
linuxでファイルやディレクトリのパーミッションを変更するときに、chmodコマンドを使うことが多いと思います。
しかし、時々ミスってしまって、例えば/path/to/dirというディレクトリ以下のすべてのファイルやサブディレクトリに対して、
chmod 777 -R path/to/dir
というように、全てのユーザーに読み書き実行の権限を与えてしまうことがあります。これは、セキュリティ上とても危険な状態です。
そこで、この記事では、このようなミスをしたときに、一括でパーミッションを修正する方法を紹介します。
コマンド
chmod -R a=rX,u+w path/to/dir
解説
このコマンドの意味は、以下の通りです。
- chmodは、ファイルやディレクトリのパーミッションを変更するコマンドです。
- -Rは、再帰的に変更するオプションです。つまり、指定したディレクトリの中にあるファイルやサブディレクトリも同じように変更します。
- a=rXは、すべてのユーザー(a)に対して、読み取り権限(r)と実行権限(X)を与えるという意味です。ただし、Xは大文字であることに注意してください。これは、ディレクトリには実行権限を与えるが、ファイルには元々実行権限がある場合のみ与えるという特別な指定です。
- u+wは、所有者(u)に対して、書き込み権限(w)を与えるという意味です。
- path/to/dirは、パーミッションを修正したいディレクトリのパスです。
したがって、このコマンドの効果は、path/to/dirというディレクトリとその中身に対して、以下のようなパーミッションを設定するということです。
- 所有者:読み取り、書き込み、実行が可能
- グループ:読み取り、実行が可能
- その他のユーザー:読み取り、実行が可能
ディレクトリまたは実行可能ファイルが 755 に、それ以外が 644 になります。
このようにして、パーミッションを一括で修正することができます。もちろん、このコマンドはあくまで一例であり、必要に応じて変更することができます。例えば、グループにも書き込み権限を与えたい場合は、g+wを追加すればよいです。また、実行権限を与えたくない場合は、Xをxに変えればよいです。詳しくは、chmodコマンドのマニュアルを参照してください。