[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

6. ファイルの権限

それぞれのファイルには,ファイルに対してユーザ持つアクセスの種類を制御 する権限(permissions)の設定があります.ファイルに対する権限は アクセスモード(access mode)とも呼ばれます.それらは,抽象的な形式 または八進数で表示可能です.


6.1 ファイルの権限の構造

ユーザがファイルに対して持つ権限は三種類のあります.

  1. ファイルを読み込む権限です.ディレクトリに対しては,これはディレクトリ の内容をリストアップする権限という意味があります.

  2. ファイルを書き込む(変更する)権限です.ディレクトリに対しては,これはディ レクトリでのファイルの作成と削除の権限を意味します.

  3. ファイルを実行(それをプログラムとして実行)する権限です.ディレクトリに 対しては,これはディレクトリのファイルにアクセスする権限を意味します.

ファイル上で上記のあらゆる処理を行うため,異なる権限を持つ,三つのユー ザの分類があります.

  1. ファイルの所有者.

  2. ファイルのグループにいるその他のユーザ.

  3. その他全員.

ファイルが作成されるとき,所有者とグループが与えられます.通常,所有者 は現在のユーザで,グループはファイルがあるディレクトリのグループですが, これはオペレーティングシステム,ファイルが作成されるファイルシステム, そしてファイルが作成される方法で変化します.chownchgrp コマンドを使用してファイルの所有者とグループを変更することが可能です.

上記でリストアップされた三つの権限の三つの設定に加えて,ファイルの権限 には三つの特別な構成部分があり,それは実行可能なファイル(プログラム)と, システムによっては,ディレクトリだけに効果があります.

  1. プロセスの事実上のユーザIDを,実行時にファイルのものに設定します (setuid bitと呼ばれます).ディレクトリには効果がありません.

  2. プロセスの事実上のグループIDを,実行時にファイルのものに設定します (setgid bitと呼ばれます).システムによって,ディレクトリに対して, そのディレクトリで作成されたファイルを同じグループのディレクトリに書き 込んでも,それを作成したユーザのグループは問題ありません.

  3. スワップデバイス上にプログラムのテキストイメージを保存するので,実行時 により速くロードされます(sticky bitと呼ばれます).システムによっ て,ディレクトリに対して,ユーザがそのディレクトリで所有していないファ イルを削除することを妨げます.これは追加のみ(append-only)のディレ クトリ作成と呼ばれます.


6.2 記号的なモード

記号的なモード(symbolic modes)とは,単一文字のシンボルを処理して, ファイルの権限を変更することを表します.それは,ファイルの権限のすべて または選択された部分を修正可能にし,オプションでそれらに前置される値と, おそらく現在のumaskにも基づきます(see section umaskと保護).

記号的なモードの書式は以下の通りです.

 
[ugoa…][[+-=][rwxXstugo…]…][,…]

以下のセクションで,記号的なモードのその他の詳細の処理を記述します.


6.2.1 権限の設定

ファイル権限へ基本的な記号的な処理で,特定ユーザのファイルの読み込み, 書き込み,そして実行の権限を,追加,削除,そして設定します.これらの処 理は以下の書式です.

 
users operation permissions

上記の三つの部分の間のスペースは,可読性のみのために表示しています.記 号的なモードではスペースを含めることはできません.

users部は,変更されるファイルのユーザアクセス権限を伝えます.それ は,一文字以上の以下の文字から成り立ちます(または,空にすることもできま す.そのとき生じることは,see section umaskと保護).これらの文字の 一つ以上が与えられるとき,その順番は重要ではありません.

u

ファイルを所有しているユーザ.

g

ファイルのグループのその他のユーザ.

o

その他すべてのユーザ.

a

すべてのユーザで,`ugo'と同じです.

operation部は,ファイルにアクセスするユーザの効果を変更する方法を 伝え,以下のシンボルの一つになります.

+

usersが既に持つ,そのファイルに対するあらゆる権限に, permissionsを加えます.

-

usersが既に持つ,そのファイルに対するあらゆる権限から, permissionsを削除します.

=

usersが持つ,そのファイルに対する権限を,permissionsのみにし ます.

permissions部は,ファイルの変更されるアクセスの種類を伝えます.ゼ ロ以上の文字になります.users部を用いた場合,一文字以上与えられた ときは,その順序は重要ではありません.permissions部の省略は, `='の時のみ役に立ち,それは指定されたusersにそのファイルに対 するすべてのアクセス権を取り除きます.

r

usersがファイルを読み込むのに必要な権限です.

w

usersがファイルに書き込むのに必要な権限です.

x

usersがファイルを実行するのに必要な権限です.

例えば,全員にファイルの読み込みと書き込みの権限を与え,実行を与えない ために,以下を使用してください.

 
a=rw

ファイルの所有者以外のすべてのユーザから書き込み権限を削除するため,以下を 使用してください.

 
go-w

上記のコマンドは,ファイルの所有者のアクセス権に効果が無く,その他のユー ザが,ファイルの読み込みと実行が可能かどうかにも効果がありません.

ファイルの所有者以外全員に,そのファイルに対しあらゆる権限を与えないた めに,以下のモードを使用してください.他のユーザは,ファイルがあるディ レクトリに書き込み権限がある場合,ファイルを削除可能です.

 
go=

同じことを指定するもう一つの方法です.

 
og-rxw

6.2.2 既存の権限をコピー

ファイルの権限を,既存の権限の一部を基準にすることができます.こうする ために,オペレータの後に`r',`w'や`x'を使用する代わりに, 文字`u',`g'や`o'を使用します.例えば以下のモードです.

 
o+g

それは,ファイルのグループにいるユーザに対する権限を,その他のユーザが そのファイルに対して持っている権限に追加します.このため,ファイルが最 初にモード664 (`rw-rw-r--')の場合,上記のモードは,それを666 (`rw-rw-rw-')に変更します.ファイルが最初にモード741 (`rwxr----x')の場合,上記のモードは,それを745 (`rwxr--r-x') に変更します.`-'と`='の処理は同様に動作します.


6.2.3 特定の権限を変更

ファイルの読み込み,書き込み,そして実行の権限の変更に加えて,特別な権 限を変更できます.権限の概要は,See section ファイルの権限の構造.

実行時にファイルの権限をユーザIDに設定するため,記号的なモードの users部で`u'と,permissions部で`s'を使用してくだ さい.

実行時にファイルの権限をグループIDに設定するため,記号的なモードの users部で`g'とpermissions部で`s'を使用してくださ い.

スワップデバイスに永久に残すファイルの権限を変更するため,記号的なモー ドのusers部で`o'とpermissions部で`t'を使用してく ださい.

例えば,ユーザID権限をプログラムに加えるため,以下のモードを使用するこ とが可能です.

 
u+s

ユーザIDのとグループIDの権限の設定をそれから削除するため,以下のモード を使用することが可能です.

 
ug-s

プログラムがスワップデバイスに保存されるようにするため,以下のモードを 使用することが可能です.

 
o+t

特別な権限は実行形式のファイルと,システムによってはディレクトリ(そこで は異なる意味を持ちます.see section ファイルの権限の構造)だけに効果があることを, 覚えておいてください.記号的なモードのusers部で`a'を用いる場 合,特別な権限には効果がありません.このため,以下の例を考えます.

 
a+s

これは,全く効果がありません.特別な権限を効果的にするために, `u',`g',そして`o'を明示的に使用する必要があります.ま た,`u+t',`g+t',そして`o+s'の組み合わせも効果がありま せん.

`='オペレータは,特別な権限に用いる場合,全く役に立ちません.例え ば,モードを以下のようにします.

 
o=t

これは,ファイルをスワップデバイスに保存するようにしますが,それは,ファ イルのグループにいないユーザが持っている可能性のある,すべての,読み込 み,書き込み,そして実行の権限を削除します.


6.2.4 実行可能の条件

記号的な権限の特別な形式がもう一つあります.`x'の代わりに`X' を用いた場合,実行権限は,既に実行形式があるファイル,またはディレクト リのみに効果があります.それは,ディレクトリが最初にあらゆる実行権限を 持っていない場合でも,ディレクトリの実行権限に効果があります.

例えば,以下のようなモードにします.

 
a+X

これは,すべてのユーザに,それまでに持っていなかった,ファイルの実行(や ディレクトリの検索)の権限を与えます.


6.2.5 複数の変更

記号的なモードの書式は,実際に上記で記述したより複雑です (see section 権限の設定).それは,ファイルの権限を複数変更する二つ の方法を提供します.

最初の方法は,記号的なモードで,複数のoperation部と permissions部をusers部の後で指定する方法です.

例えば,以下のようなモードにします.

 
og+rX-w

これは,ファイルの所有者以外のユーザに,ファイルの読み込み権限を与え, それがディレクトリの場合や,既に誰かに実行形式の権限がある場合,実行権 限を与えます.そして,それはファイルの書き込み権限を禁止します.それは ファイルの所有者が持つ権限に影響しません.上記のモードは以下の二つのモー ドと同じです.

 
og+rX
og-w

複数の変更をするための二番目の方法は,一つ以上の単純な記号的なモードを カンマで分けて指定する方法です.例えば,以下のようなモードにします.

 
a+r,go-w

これは,全員にファイルの読み込み権限を与え,所有者以外全員の書き込み権 限を削除します.もう一つの例です.

 
u=rwx,g=rx,o=

これは,特別でない権限のすべてを,ファイルに明示的に設定します.(それは ファイルのグループではないユーザに,権限を全く与えません.)

二つの方法は組み合わせることが可能です.以下のモードになります.

 
a+r,g+x-w

これは,すべてのユーザに,ファイルの読み込み権限を与え,ファイルのグルー プにいるユーザに実行権限も与えますが,書き込み権限は与えません.上記の モードは別の方法で書くこともできます.その一つは以下になります.

 
u+r,g+rx,o+r,g-w

6.2.6 umaskと保護

記号的なモードのusers部が省略されている場合,システム変数 umask無効に設定されている権限以外,デフォルトは `a' (で,すべてのユーザに影響します).umaskの値は umaskコマンドを使用して設定できます.そのデフォルト値は,システ ムごとに異なります.

記号的なモードのusers部の省略は,`+'以外のオペレーションでは 通常は役に立ちません.希望しないファイルに対する追加の権限を与えるため に,簡単なカスタマイズを保護するためumaskが使用可能なので,それ は`+'とともに用いると役に立ちます.

例として,umaskの値が2の場合,それはファイルのグループ以外のユー ザに対し書き込み権限を削除します.以下のモードを考えます.

 
+w

これは,その所有者とファイルのグループのユーザに対する書き込み権限を追 加しますが,それ以外のユーザには与えません.対照的に,以下のモー ドを考えます.

 
a+w

これはumaskを無視し,すべてのユーザに対し,書き込み権限を与える のです


6.3 数値的なモード

ファイルの権限は,内部では16ビットの整数で保存されます.記号的なモード の代わりとして,新しいモードの内部に対応した適切な八進数(基数8)で与える ことができます.この数は常に八進数で処理されます.Cのような0を前置する 必要はありません.モード0055はモード55と同じです.

通常,数値的なモードは,対応する記号的なモードより短くなりますが,以前 のファイルの権限を考慮にいれることに制限があります.それは絶対的な設定 が可能なだけです.

ユーザ,ファイルのグループのその他のユーザ,そしてファイルのグループで はないその他のユーザに応じた権限は,それぞれ三つのビットになり,それは 一つの八進数として表現されます.ここに16ビットの整数にアレンジされたビッ トがあり,最下位ビットからはじめます.

 
対応する値
モード    権限

          ファイルのグループにいないその他のユーザ:
   1      実行
   2      書き込み
   4      読み込み

          ファイルのグループのその他のユーザ:
  10      実行
  20      書き込み
  40      読み込み

          ファイルの所有者:
 100      実行
 200      書き込み
 400      読み込み

          特別な権限:
1000      テキストイメージをスワップデバイスに保存
2000      実行時のグループIDを設定
4000      実行時のユーザIDを設定

例えば,数値的なモードの4755は,記号的なモードの`u=rwxs,go=rx'に, 数値的なモードの664は,記号的なモードの`ug=rw,o=r'に対応します.数 値的なモードの0は,記号的なモードの`ugo='に対応します.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on September, 28 2005 using texi2html 1.70.