chmodコマンドの使い方

Linuxなどでシェルスクリプトを書いた時は、実行可能権をつけていないと、実行できません。そんな時に使うのが、chmodコマンドです。今回は、その使い方を解説してみたいと思います。

権限の種類

まず、ファイルに対して、どのような権限が存在するのかについて。基本は以下の3つです。

  • r ・・・ 読み込み
  • w ・・・ 書き込み
  • x ・・・ 実行

権限の対象

そして、その権限を持つ対象として、以下の4つがあります。

  • u ・・・ 所有者
  • g ・・・ グループ
  • o ・・・ その他
  • a ・・・ 上の3つ全て

使い方

まず, chmodを使って見る前に, ファイルの権限がどのようになっているのかを確認してみましょう.

ファイルがどのような状態になっているのかは、以下のコマンドを入力することで確認できます。

$ ls -l
            

では試しに、見てみましょう。まず、Terminalを開いて、適当なフォルダに移動してください。(どこでもいいです。)
そして、そこにすでにファイルがあればそのまま上のコマンドを打ってもいいですし、試しに何かファイルを作って確認してもいいです。
ここでは、新しく作ることにしましょう。以下のようにコマンドを打ってみます。

$ touch a
            

これで、今自分がいるフォルダにaというファイルが出来ました。
では、ls -lと打ってファイルの状態を確認してみましょう。以下のようになっているはずです。

-rw-r--r-- [いろいろかいてある] a
            

大事なのは、-rw-r--r--の部分です。一番左の-のところは、それがファイルかフォルダかを表します。今回はファイルなので、-となり、フォルダの場合はdとなります。
そのハイフンから右の9個が権限を表す文字列です。3つずつのまとまりで、u(所有者)、g(グループ)、o(その他)の順です。つまり上の例では、

  • u ・・・ rとw、つまり読み込み可能と書き込み可能
  • g ・・・ r、つまり読み込みのみ可能
  • o ・・・ r、つまり読み込みのみ可能

となります。 実行可能権をつけるために、以下の様なコマンドを打ってみましょう。

$ chmod u+x a
            

そして、ls -lで確認すると、

-rwxr--r--
            

のようになっているはずです。さっきとの違いは、左から4つめのハイフンが、xになっています。さっきのコマンドは、u(所有者に)+(権限を与える)x(実行の)という意味になっていて、実行可能権が付きました。逆に権限を無くしたい場合は、以下のようにします。

$ chmod u-x a
            

ここでのuは、goと交換可能です。また、aにすることで、すべての対象に権限をつけたり、消したりすることができます。

最後にchmodの引数を簡略化したものを説明します。権限を数字を使って表します。

権限の種類 数値
r 4
w 2
x 1

つまり、これを組み合わせて、下の表のような表し方ができます。

権限の組み合わせ 数値
rwx 7(=4+2+1)
rw- 6(=4+2)
r-x 5(=4+1)
-wx 3(=2+1)
r-- 4
-w- 2
--x 1
--- 0

上の表を見ればわかる通り、数値が4,2,1だったのは、8パターンがかぶらずに表せるようにするためです。たぶん。

これを使うとchmodが以下のように使えます。

$ chmod 755 a
            

ここでいう755は、

755=rwxr-xr-x

という意味です。

では最後に、今回作ったファイルを消しましょう。

$ rm a
            

とすればaというファイルは削除されます。

以上でchmodの説明を終わります。

[補足] ディレクトリごと権限を変更する

補足です. ディレクトリごとファイルの権限をまとめて変更するときには, -Rというオプションをつけます. 例えば,

$ chmod -R 755 dir
            

などとすれば, dirというディレクトリと, その中身のファイル全ての権限が変更できます.