Subsections


2.3 ファイルのアクセス権

UNIX のシステムにはただ一つのディレクトリ/ファイルの階層構造が存在し, 各ユーザーのホームディレクトリは,すべてその中にあります。 ですから, 他の人のホームディレクトリの中を覗いたりファイルの内容を見たり, さらにはファイルやディレクトリを削除することもできそうです ...それでは困りますね。

このようなことを防ぐために, UNIX ではファイルやディレクトリに関する様々な権限を, ファイルの所有者や, ファイルが属するグループ内のユーザーなどに対して設定するための仕組みがあります。 それらの権限をファイルのアクセス権 (permission) といいます。 アクセス権のことをパーミッションやアクセス許可,使用許可等と呼ぶこともあります。

2.3.1 アクセス権の読み方

ファイルのアクセス権は, ls -l で表示されるファイルの詳細情報から調べることができます。 そのために必要な情報はアクセス権と所有者およびグループです。 本節では,第 2.2 節で例示したファイル year の詳細情報
アクセス権: rw-r--r--,所有者: skonno,グループ: student
を例に,アクセス権の読み方を説明します。

  1. アクセス権を構成する 9 文字を 3 文字ずつの組に分けます。 year の場合,rw-r--r-- の 3 組です。

    各組は左から順に

    1. ファイルの所有者 (skonno) に対するアクセス権 (rw-)
    2. ファイルのグループ (student) に属する, 所有者 (skonno) 以外のユーザーに対するアクセス権 (r--)
    3. 上記以外のユーザーに対するアクセス権 (r--)
    を表しています。

  2. 3 つの組それぞれについて, 各組を構成する 3 つの文字からファイルのアクセス権を調べます。 3 つの文字は左から順に, 次に示す 3 種類のアクセス権を表しています。
    1. ファイルの内容の読み取り権16 (r または -)

      r : 読み取り可能 (readable)
      - : 読み取り不可能

    2. ファイルへの書き込み権17 (w または -)

      w : 書き込み可能 (writable)
      - : 書き込み不可能

    3. ファイルの実行権18 (x または -)

      x : 実行可能 (executable)
      - : 実行不可能

以上より,year のアクセス権は
  1. 所有者 skonno に対して, 読み取り可・書き込み可・実行不可 (rw-)
  2. グループ studnet に属する,skonno 以外のユーザーに対して, 読き取り可・書き込み不可・実行不可 (r--)
  3. その他のユーザーに対して, 読み取り可・書き込み不可・実行不可 (r--)
であることがわかります。 すなわち,year の所有者 skonno は,このファイルの内容を読んだり, ファイルに書き込みを行うことができます。グループ studnet に属する skonno 以外のユーザーと,その他のユーザーは, このファイルの内容を読み取ることのみが許されています 19

2.3.2 アクセス権の変更 -- chmod コマンド

ファイルの所有者は,chmod (change file mode) コマンドを使って, ファイルのアクセス権を変更することができます。chmod の基本的な使い方は
chmod mode file ...
であり,mode には, file ... の現在のアクセス権をどのように変更するのかを指定します。 mode に指定する要素は「誰に」「どの権限を」「与える(または取り除く)」 の三つですが,記述の順番は次のとおりです。
  1. 「誰に」: u, g, o, a の何れかを指定します20

  2. 「与える」または「取り除く」: +- を指定します。

  3. 「どの権限を」; r, w, x の何れかを指定します。
例えば
chmod g+w file
だと,file のグループに所属する(所有者以外の)ユーザーに, 書き込みの権限を与えることになります。 また,
chmod a-w file
では,全てのユーザーに対して,file への書き込みを禁止します。

2.3.3 発展 -- アクセス権の 8 進数指定(絶対指定)

chmod における modeg+w などの記号で指定する代りに, 数 (8 進数) で指定することも可能です。 数による指定では,まず次の表にあるように, 読み取り・書き込み・実行の可または不可を表す 3 文字の記号を, - のときは 0 に,それ以外のときは 1 に対応させます。 そうしてできあがった 0 と 1 の並びを 3 桁の 2 進数として解釈し, 8 進数で表現します。
記号 0,1 の並び (2進数表記) 8 進数 意味
--- 000 0 読取不可・書込不可・実行不可
--x 001 1 読取不可・書込不可・実行可
-w- 010 2 読取不可・書込可・実行不可
-wx 011 3 読取不可・書込可・実行可
r-- 100 4 読取可・書込不可・実行不可
r-x 101 5 読取可・書込不可・実行可
rw- 110 6 読取可・書込可・実行不可
rwx 111 7 読取可・書込可・実行可

上記の一桁の 8 進数を, 所有者・グループ・その他のユーザーに対するアクセス権として順に並べると, アクセス権の 8 進数表記ができあがります。 この方法による chmod の例を次に示します.

この方法では,現在のアクセス権とは無関係に, 指定したアクセス権が設定されることになります (絶対指定)。