UNIXの操作/UNIXの応用/ファイルの保護モード

すべてのファイルには,``保護モード''と呼ばれる属性があり,どのユーザがこのファイルを読み込めるか,または書き込めるかなどといったアクセス権を設定できます.ユーザは所有するファイル・ディレクトリについて,保護モードを設定することで他のユーザからの参照や書き込み,実行を禁止できます.保護モードは,``パーミッション''と呼ばれることもあります.次にファイルの保護モードの概説と,その設定方法を説明します.

4.3.1 ファイルのアクセス権

ファイルのアクセス権は,それぞれのファイルごとに,アクセスの対象(対象となるユーザ)とアクセスの種類(許可される操作)が設定されています.

アクセスの対象(対象となるユーザ)

アクセス権は対象となるユーザによって次の3種類が設定されています.ただし,CNS のユーザはグループの設定を行えません.

  • そのファイルを所有するユーザ
  • CNS 内の同じグループのメンバー
  • CNS 内の他のグループなど,その他すべてのユーザ

それぞれの対象によってアクセス権を区別して設定できます.

アクセスの種類(許可される操作)

アクセスの種類には読み出し,書き込み,実行の3つがあります.設定の効果は対象がファイルである場合とディレクトリである場合によって異なります.

  • 読み出し(`r')
    • 対象がファイルの場合
      対象のファイルをウィンドウ上,テキストエディタ上に表示できるかどうかを表します.
    • 対象がディレクトリの場合
      対象のディレクトリ以下のファイルのリストを表示できるかどうかを表します.ディレクトリの読み出しが許可されていないと,そのディレクトリの下にあるファイルをlsコマンドなどで表示できません.
  • 書き込み(`w')
    • 対象がファイルの場合
      ファイルを書き換えられるかどうかを表します.ファイルへの書き込みにはファイルの消去も含まれます.
    • 対象がディレクトリの場合
      そのディレクトリ内に自分の作ったファイルを置いたり,そのディレクトリ内のファイルを消去できるかどうかを表します.
  • 実行(`x')
    • 対象がファイルの場合
      そのファイルをコマンドとして実行できるかどうかを表します.
    • 対象がディレクトリの場合
      そのディレクトリ内にcdコマンドで移動できるかどうかを表します.

4.3.2 ファイルの保護モードの調べ方

ファイルの保護モードを調べるには,lsコマンドに`-l'オプションを指定して実行します.

%ls -l<RET>
total 5
drwx------ 32 t01000tf   1024 Nov 24 10:55 Mail
-rw-rw-rw-  1 t01000tf   4515 Nov 18 10:42 READHELP
drwxrwxr-x  4 t01000tf    512 Nov 18 11:12 Wnn
-rw-r--r--  1 t01000tf    177 Nov 24 14:43 memo
drwxr-xr-x  2 t01000tf    512 Jul 20 09:57 public_html
% _

保護モードの状態を表すのは,最も左側の列です.最初の文字は,そのファイルの種類を表し,`-'は通常のファイル,`d'はディレクトリ,`l'はリンクしたファイルを示しています.

残りの部分は,3文字ずつの3つのフィールドで構成されています.最初の3文字はファイルの所有者のアクセス権を示し,次の3文字は同じグループのメンバーのアクセス権,最後の3文字はその他のユーザのアクセス権を表しています.アクセス権が許可されていれば,許可されている操作の頭文字(`r',`w', `x')が表示され,許可されていなければ`-'が表示されます.

メールが格納されている`Mail'ディレクトリは,ユーザ本人以外はすべてのアクセス権が不許可になっており(`rwx---'),`public_html'ディレクトリは,他のユーザへの読み出し(`r')だけでなく,実行(`x')が許可されています(`rwxr-xr-x').


4.3.3 保護モードを変更する chmodコマンド

ファイルやディレクトリの保護モードを変更するには,chmodコマンドを利用します.

次に実行例を示します.

  • chmod go-r [ファイル名]
    自分以外のユーザ,つまりグループのメンバーと他のユーザ(`g', `o')から,読み出し許可(`r')を削除(`-')します.
  • chmod a+r [ファイル名]
    すべてのユーザ(`a')に対して,読み出し許可(`r')を追加(`+')します.
  • chmod go-w [ファイル名]
    自分以外のユーザ,つまりグループのメンバーと他のユーザ(`g', `o')から,書き込み許可(`w')を削除(`-')します.
  • chmod =rx [ファイル名]
    省略されているが,すべてのユーザ(`a')に対して,新たに読み出し許可(`r')と,実行許可(`x')が設定(`=')され,書き込み許可は削除されます.

次に実行例を示します.

%ls -l <RET>
-rw-r--r--  9 s01000hf     1024 Jan 31 14:48 report.txt
%chmod go-r <RET>
%ls -l <RET>
-rw-------  9 s01000hf     1024 Jan 31 14:48 report.txt
%chmod a+r <RET>
%ls -l <RET>
-rw-r--r--  9 s01000hf     1024 Jan 31 14:48 report.txt
% _

8進法によるモード設定

`a+r',`g-r'などといった表記方法以外にも,モード設定の方法があります.保護モードは,対象別の3つの部分(ユーザ,グループ,その他)から成り立っていますが,読み出し(`r')を4,書き込み(`w')を2,実行(`x')を1とし,許可する動作の数字だけを合計すると,モード設定のあらゆる組み合わせを0から7までの8進法の数で表せます(表4.2).この数字を3つ並べたものを,chmod コマンドの引数(モード指定)として指定できます.


表 4.2: 8進数と保護モード
8進数 意味 rwx
0 許可なし ---
1 実行のみ可 --x
2 書き込みのみ可 -w-
3 書き込みと実行のみ可 -wx
8進数 意味 rwx
4 読み出しのみ可 r--
5 読み出しと実行のみ可 r-x
6 読み出しと書き込みのみ可 rw-
7 すべて許可 rwx

次にいくつか例をあげます.

  • chmod 755 [ファイル名]
    自分が7,その他のユーザは5なので,保護モードは`rwxr-xr-x'になります.情報を不特定のユーザに公開するときにはこの状態にする必要があります.
  • chmod 700 [ファイル名]
    自分が7,その他のユーザは0なので,保護モードは`rwx---'になります.他のユーザから隠すファイルは,この状態にする必要があり ます.

% ls -lF<RET>
drwxr-xr-x  4 s01000hf     1024 Jan 31 14:51 Report/
% chmod 700 Report<RET>
% ls -lF<RET>
drwx------  4 s01000hf     1024 Jan 31 14:51 Report/
% chmod 755 Report<RET>
% ls -lF<RET>
drwxr-xr-x  4 s01000hf     1024 Jan 31 14:51 Report/
% _