ファイルパーミッション

ファイルパーミッションとは



ファイルパーミッションは、ファイルやディレクトリへのアクセス権を管理する仕組みです。どのユーザーやグループが、ファイルに対してどのような操作(読み取り、書き込み、実行など)を許可されているかを定義します。これにより、システム内のデータやリソースへの不正アクセスを防ぎ、セキュリティを確保します。

オペレーティングシステムによる違い



ファイルパーミッションの管理方法は、オペレーティングシステムによって異なります。

Unix系OS (Linux, macOSなど):
ファイルごとに、ユーザー(所有者)、グループ、その他の3つのクラスに対して、読み取り (read)、書き込み (write)、実行 (execute) のパーミッションを設定します。
アクセス制御リスト (ACL) をサポートしている場合もあり、より複雑なアクセス制御が可能です。
MS-DOS系OS (Windows 95/98/Meなど):
パーミッションの概念がなく、「読み取り専用」属性のみを設定できます。
この属性は誰でも変更可能で、セキュリティ機能としては脆弱です。
他のMS-DOS互換OS (DR-DOS, PalmDOSなど):
ファイルやディレクトリごとに、読み取り、書き込み、実行、削除のパーミッションを設定可能です。
一部のOSではパスワードや所有権の概念もサポートしています。
Windows NT系OS (Windows 2000/XP以降):
NTFSファイルシステムアクセス制御リスト (ACL) を使用し、複雑なパーミッション管理が可能です。
Classic Mac OS:
パーミッションの概念がなく、「Protected」属性のみをサポートしています。
AmigaOS:
シングルユーザーOSとしては高度なパーミッション体系をサポートしていました。
AmigaOS 1.xでは、アーカイブ、読み取り、書き込み、実行、削除のパーミッションがありました。
AmigaOS 2.x以降では、Hold、Script、Pureなどのパーミッションもサポートされました。
Mac OS X:
初期のバージョンではPOSIX準拠のパーミッションを使用。
Mac OS X v10.4 (Tiger) 以降はNFSv4 ACLもサポートしています。
Classic Mac OSでの "Protected" 属性もサポートしています。
Solaris:
使用するファイルシステムによってACLのサポートが異なります。
古いUFSではPOSIX.1e ACLを、ZFSではNFSv4 ACLをサポートしています。
Linux:
POSIX.1e ACLをサポートしています。
FreeBSD:
UFSではPOSIX.1e ACLを、UFSとZFSではNFSv4 ACLをサポートしています。
IBM z/OS:
RACF (Resource Access Control Facility) でファイルセキュリティを実装しています。

Unix系のパーミッション



Unix系のシステムでは、パーミッションは次の3つのクラスで管理されます。

ユーザー (user): ファイルの所有者
グループ (group): ファイルが属するグループ
その他 (others): 上記以外全てのユーザー

各クラスに対して、次の3種類の基本パーミッションが設定されます。

読み取り (read): ファイルの内容の読み取り、ディレクトリ内のファイル一覧の表示
書き込み (write): ファイル内容の変更、ディレクトリ内のファイル作成・削除
実行 (execute): ファイルの実行、ディレクトリへの移動

さらに、特殊なパーミッションとして、以下のものがあります。

set user ID (setuid/SUID): ファイル実行時に、所有者の権限で実行
set group ID (setgid/SGID): ファイル実行時に、グループの権限で実行。ディレクトリでは、配下に作成されるファイルのグループを継承
Sticky: 実行ファイルでは、プロセス終了後もメモリ上のイメージを保持。ディレクトリでは、所有者以外によるファイル削除や改名を禁止

パーミッションの表記法



パーミッションは、記号表記と八進表記の2つの方法で表現されます。

記号表記 (symbolic notation)


10文字の文字列でパーミッションを表します。

1文字目:ファイル種別
`-`: 通常ファイル
`d`: ディレクトリ
`b`: ブロックデバイス
`c`: キャラクタデバイス
`l`: シンボリックリンク
`p`: 名前付きパイプ
`s`: UNIXドメインソケット
2-4文字目:ユーザークラスのパーミッション (rwx)
5-7文字目:グループクラスのパーミッション (rwx)
8-10文字目:その他クラスのパーミッション (rwx)

例:

`-rwxr-xr-x`: 通常ファイル。所有者は全て可能、グループとその他は読み取りと実行のみ可能
`dr-x--`: ディレクトリ。所有者は読み取りと移動のみ可能

特殊なパーミッションは、それぞれのクラスの実行権限部分に以下のように表示されます。

`s`: setuid/setgidが設定されたファイル
`t`: スティッキービットが設定されたディレクトリ

八進表記 (octal notation)


3桁または4桁の八進数でパーミッションを表します。

3桁の場合:各桁は、ユーザークラス、グループクラス、その他クラスに対応します。
4: 読み取り (r)
2: 書き込み (w)
1: 実行 (x)
各桁の値は、これらの合計です。
4桁の場合:先頭の1桁は、特殊なパーミッションを表します。
4: setuid
2: setgid
1: sticky

例:

`755`: `-rwxr-xr-x`に対応
`664`: `-rw-rw-r--`に対応
`0755`: `-rwxr-xr-x`に対応(先頭の0は特殊パーミッションがないことを示す)
* `6745`:`-rwsr-Sr-x`に対応

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



一部のシステムでは、各ユーザーごとに新しいグループ(ユーザープライベートグループ)を作成します。これにより、umaskをより緩く設定でき、ファイルの共有をより柔軟に行えるようになります。

まとめ



ファイルパーミッションは、システムセキュリティを維持するために不可欠です。OSの種類によって管理方法が異なり、Unix系システムでは複雑なパーミッション設定が可能です。これらのパーミッションを理解し、適切に設定することで、データへのアクセスを効果的に制御できます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。