(Translated by https://www.hiragana.jp/)
ファイルパーミッション - Wikipedia コンテンツにスキップ

ファイルパーミッション

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

ファイルパーミッションえい: file permission)とは、ファイルごとに定義ていぎされた、し・みなどのアクセスにたいする許可きょか情報じょうほう通常つうじょうは、ファイルシステムうちのファイルごとに、特定とくていユーザーやグループにたいしてアクセスけん設定せっていする。これによって、ユーザーごとのファイルシステムのかた影響えいきょうあたえ、ファイルシステムにたいする変更へんこう制限せいげんする。たんパーミッションともう。

オペレーティングシステムによるちが

[編集へんしゅう]

UnixけいPOSIX準拠じゅんきょのシステムは、LinuxmacOSふくめて個々ここのファイルを単純たんじゅん方式ほうしき管理かんりする。それらシステムのおおくはなんらかのアクセス制御せいぎょリスト (ACL) もサポートしており、独自どくじ方式ほうしきたとえば、ふるHP-UXのACL)、POSIX.1e のACL方式ほうしき(かつてPOSIXのドラフトばん規定きていされたが結局けっきょく規格きかくされなかった)、NFSv4標準ひょうじゅん一部いちぶのACLなどがある。

MS-DOSけいのオペレーティングシステム(PC DOSWindows 95Windows 98Windows Meなどをふくむ)はパーミッションをたない。たんに「リードオンリー(専用せんよう)」というファイル属性ぞくせい任意にんいのユーザーがファイル単位たんい設定せっていできるだけである。リードオンリー属性ぞくせい設定せっていしても、どのユーザーでもプログラムでもその設定せってい変更へんこうできるので、ファイルを変更へんこうしたり削除さくじょしたりするのをふせげない。また、ユーザーがファイルをめないように設定せっていする属性ぞくせい存在そんざいしない(かくすことはできるが、パスめいっていればむことは可能かのう)。

のMS-DOS互換ごかんOS(DR-DOS 3.31 およびそれ以降いこう、PalmDOS、Novell DOS、OpenDOS、FlexOS、4680 OS、4690 OSMultiuser DOS、Concurrent DOS、Datapac System Manager、IMS REAL/32 など)は、ファイルやディレクトリごとにリード/ライト/実行じっこう/削除さくじょのファイルパーミッションをFATボリュームじょうでサポートしている。FlexOS、4680 OS、4690 OS 以外いがいのOSでは、ファイルやディレクトリごとにパスワードも設定せっていできる。DR DOS、PalmDOS、Novell DOS、OpenDOS 以外いがいのOSでは、ファイルやディレクトリごとに「ワールド/グループ/所有しょゆうしゃ」という所有しょゆうけんのクラスをサポートしている。なお、DR DOS 6.0 およびそれ以降いこう、PalmDOS、Novell DOS、OpenDOS は個人こじんようOSなので、マルチユーザーようセキュリティモジュールをロードしないと所有しょゆうけんクラスは使用しようできない。

OpenVMSWindows NT派生はせいOS(Windows 2000[1]Windows XPなど)およびNTFS環境かんきょうではアクセス制御せいぎょリスト (ACL) を使用しようしてもっと複雑ふくざつ多様たようなパーミッションを管理かんりしている[2]OpenVMSはまたUnixけい同様どうようのパーミッション方式ほうしき使つかえるが、Unixけいよりも複雑ふくざつである。後述こうじゅつのクラスが4つあり(システム、オーナー、グループ、ワールド)、アクセスパーミッションも4つある(リード、ライト、実行じっこう削除さくじょ)。クラスは包含ほうがん関係かんけいにあり、ワールドにはグループがふくまれ、グループにはオーナーがふくまれる。システムクラスにはシステムユーザーしかぞくさない(Unixけいスーパーユーザー相当そうとうする)[3]

Classic Mac OSはDOSけいやDOSベースのWindowsと同様どうようパーミッションをたないが、"Protected" という属性ぞくせいだけをサポートしていた。

AmigaAmigaDOS当時とうじのシングルユーザーOSとしてはすすんだパーミッション体系たいけいをサポートしていた。AmigaOS 1.x では、アーカイブ/リード/ライト/実行じっこう/削除さくじょというパーミッションをそなえていた。AmigaOS 2.x およびそれ以降いこうでは、さらに Hold/Script/Pure というパーミッションもサポートしている。

Mac OS X v10.0 (Cheetah) からMac OS X v10.3 (Panther) までは、POSIX準拠じゅんきょのパーミッションを使用しようしていた。Mac OS X v10.4 (Tiger) 以降いこうでは NFSv4 ACL もサポートしている。従来じゅうらいからのUnixけいのファイルパーミッション方式ほうしきもサポートしており、Apple Mac OS X Server version 10.4+ File Services Administration Manual では従来じゅうらいからのパーミッション方式ほうしきのみを使用しようすることを推奨すいしょうしていた。また、Classic Mac OSでの "Protected" 属性ぞくせいもサポートしている。

Solaris でのACLサポートは使用しようするファイルシステムに依存いぞんする。ふるUFSは POSIX.1e ACL をサポートしており、ZFSは NFSv4 ACL のみをサポートしている。

Linuxは POSIX.1e ACL をサポートしている。ext3ファイルシステムけに実験じっけんてきに NFSv4 ACL をサポートしたれいがある[4]

FreeBSDは UFS では POSIX.1e ACL をサポートし、UFS と ZFS では NFSv4 ACL をサポートしている[5]

IBM z/OS ではファイルセキュリティを RACF (Resource Access Control Facility) で実装じっそうしている[6]

Unixけいのパーミッション

[編集へんしゅう]

Unixけいシステムのパーミッションは3つの「クラス」にけて管理かんりされる。そのクラスとは「ユーザー; user」、「グループ; group」、「その; others」である。事実じじつじょう、UNIXのパーミッションはアクセス制御せいぎょリスト単純たんじゅんしたものとえる。

UNIXのファイルシステムでは、すべてのファイルディレクトリ特定とくていのユーザーが「所有しょゆう」している。オブジェクトの所有しょゆうしゃがその「ユーザークラス」に対応たいおうする。ユーザークラスのパーミッションはその特定とくていのユーザーにのみ適用てきようされる。

ファイルにはグループも対応付たいおうづけられていて、それが「グループクラス」に対応たいおうする。グループクラスのパーミッションはそのグループのメンバー(所有しょゆうしゃ以外いがい)にのみ適用てきようされる。

どちらでもないそれ以外いがいのユーザーには「そのクラス」のパーミッションが適用てきようされる。

あるユーザーに適用てきようされる実際じっさいのパーミッションは、これらの論理ろんりてき優先ゆうせん順位じゅんいしたがって決定けっていされる。たとえば、あるファイルを所有しょゆうするユーザーはグループやそののクラスがどうであれ、ユーザークラスのパーミッションの適用てきようける。

基本きほんパーミッション

[編集へんしゅう]

Unixけいシステムでは、いずれのクラスにも以下いかの3種類しゅるいのパーミッションが存在そんざいする。

  • 「リード; read」パーミッション:ファイルをむことが許可きょかされる。ディレクトリの場合ばあい、ディレクトリない存在そんざいするファイルの一覧いちらんむことが許可きょかされる。
  • 「ライト; write」パーミッション:ファイルの変更へんこう許可きょかされる。ディレクトリの場合ばあい、ツリーの構造こうぞう変更へんこう(ファイルの新規しんき作成さくせい作成さくせいしたファイルのパーミッション設定せってい、ファイルの削除さくじょなど)が許可きょかされる。
  • 実行じっこう; execute」パーミッション:ファイルを実行じっこうすることが許可きょかされる。このパーミッションはバイナリファイル以外いがいでも設定せっていでき、設定せっていされたファイルは実行じっこうされる(すくなくとも要求ようきゅうされれば実行じっこうしようとこころみる)。ディレクトリに設定せっていされると、そのディレクトリに移動いどうすることができ、なかのファイルにアクセスすることができる。

パーミッションがセットされていないと、その権利けんり行使こうしできない。ACLベースのシステムとはことなり、Unixけいシステムのパーミッションは「継承けいしょう」されない。ディレクトリないのファイルぐんはディレクトリとおなじパーミッションであるとはかぎらない。てられるパーミッションはumask使つかって決定けっていされる。

そののパーミッション

[編集へんしゅう]

Unixけいシステムはに3種類しゅるいのパーミッション(またはモード)をつ。これらの特殊とくしゅなパーミッションはクラスにらず、そのファイルやディレクトリ全体ぜんたい適用てきようされる。

  • set user IDsetuid、SUIDパーミッション:このパーミッションが設定せっていされたファイルを実行じっこうすると、生成せいせいされるプロセスの実効じっこうユーザーIDはそのファイルのユーザークラスのものとなる。
  • set group IDsetgid、SGIDパーミッション:このパーミッションが設定せっていされたファイルを実行じっこうすると、生成せいせいされるプロセスの実効じっこうグループIDはそのファイルのグループクラスのものとなる。ディレクトリの場合ばあい、その配下はいかつくられるファイルのグループはディレクトリのグループを継承けいしょうする(デフォルトでは実効じっこうユーザーのいちグループが設定せっていされる)。
  • Sticky パーミッション:実行じっこうファイルでは、生成せいせいされたプロセスのメモリじょうのイメージをプロセス終了しゅうりょう保持ほじされる(これはふるいOSでの性能せいのう向上こうじょうさくであり、現在げんざい[いつ?]のOSではかならずしもイメージを保持ほじしているとはかぎらない)。ディレクトリに設定せっていすると、配下はいかのファイルぐん改名かいめい削除さくじょが(そのファイルの)所有しょゆうしゃ以外いがいではできなくなる。所有しょゆうしゃ以外いがいのユーザーはファイルにす(あるいはのファイルを連結れんけつする)ことしかできない。

これらのパーミッションはそれぞれ1ビットであらわされることから、「setuidビット」、「setgidビット」、「スティッキービット」ともばれる。

パーミッションの表記ひょうきほう

[編集へんしゅう]

記号きごう表記ひょうき(シンボリックモード)

[編集へんしゅう]

UNIXのパーミッションを表示ひょうじする形式けいしき様々さまざまである。もっと一般いっぱんてき形式けいしき記号きごう表記ひょうき (symbolic notation) である。この形式けいしきではパーミッションを10文字もじ文字もじれつ表記ひょうきする。

先頭せんとう文字もじ
- 通常つうじょうファイル
d ディレクトリ
l シンボリックリンク
クラスごとの3文字もじ
先頭せんとう ユーザーのパーミッション
中間ちゅうかん グループのパーミッション
末尾まつび そのクラスのパーミッション
かく3文字もじあらわすパーミッション
1文字もじ r: リード-: リード不可ふか
2文字もじ w: ライト-: ライト不可ふか
3文字もじ x: 実行じっこう-: 実行じっこう不可ふか

最初さいしょの1文字もじはファイルの種別しゅべつUNIXファイルタイプ)をあらわす:

かくクラスのパーミッションは、3文字もじ構成こうせいされる。先頭せんとうの3文字もじはユーザー(所有しょゆうしゃ)クラスをあらわす。中間ちゅうかんの3文字もじはグループクラスをあらわす。末尾まつびの3文字もじはそのクラスをあらわす。

かくクラスの3文字もじのパーミッションは、じゅんにリード(し)、ライト(み)、実行じっこうあらわす。

  • 'r' ならばリードで、'-' ならばリード不可ふか
  • 'w' ならばライトで、'-' ならばライト不可ふか
  • 'x' ならば実行じっこうで、'-' ならば実行じっこう不可ふか

記号きごう表記ひょうきれいを、以下いかしめす。

  1. "-rwxr-xr-x" は、通常つうじょうファイルであり、ユーザーはすべての操作そうさ可能かのう、それ以外いがいのクラスはリードと実行じっこうだけが可能かのう
  2. "crw-rw-r--" は、キャラクタースペシャルファイルであり、所有しょゆうしゃおよびグループはリードとライトが可能かのう、そののクラスはリードだけが可能かのう
  3. "dr-x------" は、ディレクトリであり、ユーザーがリードとそこへの移動いどう可能かのう、それ以外いがいのクラスはなにもできない。

記号きごう表記ひょうきとそののパーミッション

[編集へんしゅう]

そののパーミッションがくわわると、記号きごう表記ひょうき若干じゃっかん複雑ふくざつになる。

パーミッション クラス 実行じっこう1 実行じっこう不可ふか2
Set User ID (setuid) ユーザー s S
Set Group ID (setgid) グループ s S
Sticky その t T
  1. 実行じっこうであることも同時どうじしめ文字もじ
  2. 実行じっこう不可ふかであることも同時どうじしめ文字もじ

以下いかれいしめす。

  • "-rwsr-Sr-x" はユーザークラスがリード/ライト/実行じっこう可能かのうで setuid パーミッションも付与ふよされている。グループクラスはリードで setgid パーミッションが付与ふよされている。そのクラスはリード/実行じっこう可能かのうである。

はちしん表記ひょうき(絶対ぜったいモード)

[編集へんしゅう]

UNIXのパーミッションのべつ表記ひょうきほうとして「はちしん表記ひょうき」がある。はちしん表記ひょうきは3けたか4けたはち進数しんすうである。

3けたはちしん表記ひょうきでは、かくけたがユーザークラス、グループクラス、そのクラスに対応たいおうしている。

これら3けたはパーミッションをビットとしてそれをあつめたものである。つまり、ある加算かさんすることで特定とくていのパーミッションが付与ふよされていることをあらわす。

  • 4 を加算かさんするとリードとなる
  • 2 を加算かさんするとライトとなる
  • 1 を加算かさんすると実行じっこうとなる

これにより、明確めいかくわせはなく、つねにあるパーミッションのわせを表示ひょうじすることができる。

以下いか前述ぜんじゅつ記号きごう表記ひょうきでのれいはちしん表記ひょうき対応たいおうさせたものである:

  • "-rwxr-xr-x" は3けたはちしん表記ひょうきでは 755 となる。
  • "-rw-rw-r--" は3けたはちしん表記ひょうきでは 664 となる。
  • "-r-x------" は3けたはちしん表記ひょうきでは 500 となる。

はちしん表記ひょうきとそののパーミッション

[編集へんしゅう]

4けたはちしん表記ひょうきもある。この場合ばあい前述ぜんじゅつの3けた表記ひょうきくわえて、先頭せんとうに1けたくわえて追加ついかのパーミッションを表示ひょうじする。システムによっては最初さいしょの1けた省略しょうりゃくして表示ひょうじすることができず、つねに4けた表示ひょうじとなる(追加ついかパーミッションが設定せっていされていなければ、先頭せんとうの1けたはゼロとなる)。

この最初さいしょけた以下いかのビットの合計ごうけいである:

  • setuidビットは4を合計ごうけい加算かさんする。
  • setgidビットは2を合計ごうけい加算かさんする。
  • stickyビットは1を合計ごうけい加算かさんする。

記号きごう表記ひょうきれい "-rwsr-Sr-x"6745表示ひょうじされる。また、3けた表示ひょうじれいは4けた表示ひょうじでは、それぞれ 075506640500 となる。

パーミッションの一覧いちらん表示ひょうじ

[編集へんしゅう]

UNIX けい OS におけるコマンド ls -l は、そのディレクトリにあるファイルなどのパーミッション(記号きごう表記ひょうき)の一覧いちらん表示ひょうじする。

コマンド stat -c '%n %a %A' は、パーミッションをはちしん表記ひょうきとして表示ひょうじする。

ユーザープライベートグループ

[編集へんしゅう]

一部いちぶのシステムは伝統でんとうてきな POSIX のユーザーとグループのモデルからはなれ、かくユーザーごとにあらたなグループ「ユーザープライベートグループ」を生成せいせいする。ユーザープライベートグループは様々さまざま理由りゆうこのましいとされている[7]たとえば、通常つうじょうのUNIXでは umask を 022 に設定せっていしてグループのけんをマスクするが、ユーザーごとにグループをつくるので umask を 002 にしてもかまわない。

脚注きゃくちゅう

[編集へんしゅう]

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]