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

26. ファイルの許可

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

26.1 ファイルの許可の構造  Structure of file permissions.
26.2 象徴的なモード  Mnemonic permissions representation.
26.3 数値的なモード  Permissions as octal numbers.


26.1 ファイルの許可の構造

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

  1. ファイルを読み込む許可です.ディレクトリに対しては,これはディレクトリの 内容をリストアップする許可という意味があります.
  2. ファイルを書き込む(変更する)許可です.ディレクトリに対しては,これはディ レクトリでのファイルの作成と削除の許可を意味します.
  3. ファイルを実行(それをプログラムとして実行)する許可です.ディレクトリに対 しては,これはディレクトリのファイルにアクセスする許可を意味します.

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

  1. ファイルの所有者.
  2. ファイルのグループにいるその他のユーザ.
  3. その他全員.

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

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

  1. プロセスの実効ユーザIDを,実行時にファイルのものに設定します(setuid bitと呼ばれます).ディレクトリには効果がありません.
  2. プロセスの実効グループIDを,実行時にファイルのものに設定します (setgid bitと呼ばれます).いくつかのシステムのディレクトリに対して は,そのディレクトリで作成されたファイルを同じグループのディレクトリとし て置いても,それを作成したユーザのグループは問題ありません.
  3. スワップデバイス上のプログラムのテキストイメージを保存するので,実行時に より速くロードされます(sticky bitと呼ばれます).いくつかのシステム のディレクトリに対しては,ユーザが所有していないファイルやディレクトリ場 合,そのディレクトリ内でのファイルの削除や名前の変更を妨げます.これは, ディレクトリに対する制限された削除フラグ(restricted deletion flag) と呼ばれます.

上記の追加の許可として,ファイルシステム特有のファイル属性があるかもし れません.例えば,アクセス制御リスト(ACL)で,ファイルが圧縮されている かどうか,ファイルが編集可能かどうか(不変性),ファイルのダンプが可能か どうかなどです.これらは通常,ファイルシステム特有のプログラムで設定さ れます.例えば以下のものがあります.

ext2
GNUとLinux/GNUのext2ファイルシステム固有のファイルの許可("属性")は, chattrを使用して設定します.

FFS
FreeBSDのFFSファイルシステムの固有のファイルの許可("フラグ")は, chrflagsを使用して設定します.

ファイルの許可"ビット"はファイル上で処理可能であっても,処理が失敗す る可能性もあります.その理由は以下の通りです.

例えば,ファイル上の不変属性が設定されている場合,chmod a+w FILEを実行したという事実によらず,編集することは不可能です.


26.2 象徴的なモード

象徴的なモード(Symbolic modes)は,単一文字のシンボルの演算子として, ファイルの許可を変更することを表します.それは,ファイルの許可の部分のど れかまたは全てを編集可能にし,オプションでそれらに前置される値と,おそら く現在のumaskにも基づきます(see section 26.2.6 umaskと保護).

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

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

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

26.2.1 許可の設定  Basic operations on permissions.
26.2.2 既存の許可をコピー  Copying existing permissions.
26.2.3 特別な許可を変更  Special permissions.
26.2.4 実行可能の条件  Conditionally affecting executability.
26.2.5 複数の変更  Making multiple changes.
26.2.6 umaskと保護  The effect of the umask.


26.2.1 許可の設定

ファイルの許可での基本的な象徴的処理で,特定ユーザのファイルの読み込み, 書き込み,実行の許可を,加えたり,削除したり,設定します.これらの処理は 以下の書式です.

 
users operation permissions

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

users部は,ファイルアクセスを変更されるユーザを伝えます.それは以 下の,一つ以上の文字から成り立ちます(または,空にすることもできます.そ のとき生じることは,see section 26.2.6 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


26.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')に 変更します.`-'と`='の処理は同様に働きます.


26.2.3 特別な許可を変更

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

実行時にファイルの許可をユーザ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 26.1 ファイルの許可の構造)のみに効果があることを, 覚えておいてください.また,`u+t',`g+t',そして`o+s'の様 な組合わせには効果はありません.

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

 
o=t

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


26.2.4 実行可能の条件

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

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

 
a+X

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


26.2.5 複数の変更

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

最初の方法は,象徴的なモードで,複数の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


26.2.6 umaskと保護

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

象徴的なモードのusers部の省略は,`+'以外のオペレーションでは 一般に役に立ちません.希望しないファイルに対する余分な許可を与えることに 対して,簡単にカスタマイズ可能な保護としてumaskが使用可能になるの で,それは`+'とともに用いると役に立ちます.

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

 
+w

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

 
a+w

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


26.3 数値的なモード

ファイルの許可は,内部では整数で保存されます.象徴的なモードの代わりとし て,新しいモードの内部に対応した適切な八進数(基数8)で与えることができま す.この数は常に八進数で処理されます.Cで行うような,前置される0は不要で す.モード0055はモード55と同じです.

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

ほとんどのシステム上では,ユーザ,ファイルのグループのその他のユーザ,そ してファイルのグループではないその他のユーザに応じた許可は,それぞれ三つ のビットになり,それは一つの八進数として表現されます.ここにビットを整え る方法があり,それは最下位ビットからはじめます.

 
対応する値
モード    許可

          ファイルのグループにいないその他のユーザ:
   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 February, 25 2004 using texi2html