Go to main content
Oracle® Solaris 11.3 でのファイルのセキュリティー保護とファイル整合性の検証

印刷ビューの終了

更新: 2016 年 1 月
 
 

UNIX アクセス権によるファイル保護

UNIX ファイルアクセス権と ACL を使用して、ファイルをセキュリティー保護できます。スティッキービットが設定されたファイルと、実行可能なファイルは、特殊なセキュリティー対策が必要です。

ファイルの監視と保護を行うコマンド

この表は、ファイルとディレクトリのモニタリングと保護を行うコマンドについて説明したものです。

表 1  ファイルとディレクトリの保護を行うコマンド
コマンド
説明
マニュアルページ
ls
ディレクトリ内のファイルとファイル情報を表示します。
chown
ファイルの所有権を変更します。
chgrp
ファイルのグループ所有権を変更します。
chmod
ファイルのアクセス権を変更します。記号モード (文字と記号) または絶対モード (8 進数) を使用して、ファイルのアクセス権を変更できます。

ファイルとディレクトリの所有権

    従来の UNIX ファイルアクセス権では、次に示す 3 つのユーザークラスに所有権を割り当てることができます。

  • ユーザー – ファイルまたはディレクトリの所有者。通常はファイルを作成したユーザーです。ファイルの所有者は、そのファイルの読み取り、書き込み (ファイルを変更する)、または実行 (コマンドの場合) が行えるユーザーを決定できます。

  • グループ – ユーザーグループのメンバー。

  • その他 – ファイル所有者ではなくグループメンバーでもないその他の全ユーザー。

ファイルアクセス権の割り当てや変更が行えるのは、通常、そのファイルの所有者だけです。さらに、root アカウントでもファイルの所有権を変更できます。システムのポリシーをオーバーライドするには、使用例 2を参照してください。

ファイルは、7 つの形式のいずれかになります。各形式は、次のように記号で示されます。

- (マイナス記号)

テキストまたはプログラム

b

ブロック型特殊ファイル

c

文字型特殊ファイル

d

ディレクトリ

l

シンボリックリンク

s

ソケット

D

ドア

P

名前付きパイプ (FIFO)

UNIX ファイルアクセス権

次の表に、各ユーザークラスに与えることができる、ファイルまたはディレクトリのアクセス権を示します。

表 2  ファイルとディレクトリのアクセス権
記号
アクセス権
オブジェクト
説明
r
読み取り
ファイル
ファイルの内容を開いて読み込むことができます。
r
読み取り
ディレクトリ
ディレクトリ内のファイルを一覧表示できます。
w
書き込み
ファイル
ファイルの内容の変更またはファイルの削除を行えます。
w
書き込み
ディレクトリ
ディレクトリに対してファイルまたはリンクを追加できます。また、ディレクトリ内のファイルまたはリンクの削除も行えます。
x
実行
ファイル
ファイルがプログラムまたはシェルスクリプトの場合、そのファイルを実行できます。また、exec(2) システム呼び出しの 1 つを使用してそのプログラムを実行することもできます。
x
実行
ディレクトリ
ディレクトリ内のファイルを開いたり、実行したりできます。また、ディレクトリを作成し、その下にサブディレクトリを作成できます。
-
拒否
ファイルとディレクトリ
ファイルの読み込み、書き込み、または実行を行うことができません。

これらのファイルアクセス権は、通常のファイルと特殊ファイル (デバイス、ソケット、名前付きパイプ (FIFO) など) の両方に適用されます。

シンボリックリンクには、そのリンクが指すファイルのアクセス権が適用されます。

ディレクトリとそのサブディレクトリ内のファイルは、そのディレクトリに対するファイルアクセス権を制限することで保護できます。ただし、root 役割は、システム上のすべてのファイルとディレクトリにアクセスできることに注意してください。

setuidsetgid、およびスティッキービットを使用する特殊なファイルアクセス権

実行可能ファイルと公開ディレクトリには、 3 種類の特殊なアクセス権 (setuidsetgid、およびスティッキービット) を設定できます。これらのアクセス権を設定すると、その実行可能ファイルを実行するユーザーは、そのファイルの所有者 (またはグループ) の ID を持つことができます。

特殊なアクセス権はセキュリティー上の問題を引き起こすため、設定するときは十分な注意が必要です。たとえば、ユーザーは、ユーザー ID (UID) を 0 (root の UID) に設定するプログラムを実行することによって root 権限を取得できます。また、すべてのユーザーは、所有するファイルに対して特殊なアクセス権を設定できるため、これもセキュリティー上の問題の原因となります。

root 権限を取得するための setuid アクセス権や setgid アクセス権の承認されていない使用がないかどうか、システムをモニターするようにしてください。疑わしいアクセス権によって、管理プログラムの所有権が rootbin ではなく一般ユーザーに付与されていることが考えられます。この特殊なアクセス権を使用しているファイルをすべて検索し、リストする方法は、特殊なファイルアクセス権が設定されたファイルを見つける方法を参照してください。

setuid アクセス権

setuid アクセス権を実行可能ファイルに設定すると、このファイルを実行するプロセスにはその実行可能ファイルを実行しているユーザーではなく、ファイルの所有者に基づいてアクセス権が与えられます。この特殊なアクセス権を使用すると、通常は所有者しか利用できないファイルやディレクトリにアクセスできます。

たとえば、passwd コマンドの setuid アクセス権によってユーザーはパスワードを変更できます。次に、setuid アクセス権のある passwd コマンドの例を示します。

-r-sr-sr-x   1 root     sys       56808 Jun 17 12:02 /usr/bin/passwd

この特殊なアクセス権にはセキュリティーリスクが存在します。この特殊なアクセス権は、プロセスの実行が終了したあとでも、高度な知識のあるユーザーは setuid プロセスによって与えられたアクセス権を維持する手段を見つけることができるため、セキュリティー上の危険が存在します。


注 - プログラムから、予約済みの UID (0 から 100) で setuid アクセス権を使用しても、実効 UID が正しく設定されないことがあります。シェルスクリプトを使用するか、setuid アクセス権では予約済み UID を使用しないようにしてください。

setgid アクセス権

setgidアクセス権は setuid アクセス権に似ています。プロセスの実効グループ ID (GID) はファイルを所有するグループに変更され、ユーザーにはそのグループに与えられたアクセス権に基づくアクセス権が与えられます。/usr/bin/mail コマンドには、次のように setgid アクセス権が設定されています。

-r-x--s--x   1 root   mail     71212 Jun 17 12:01 /usr/bin/mail

setgid アクセス権がディレクトリに適用されると、このディレクトリ内で作成されたファイルは、ディレクトリを所有するグループに属します。生成するプロセスが所属するグループに含まれるわけではありません。ディレクトリに対する書き込み権および実行権を持つユーザーは、そのディレクトリにファイルを作成できます。ただし、作成したファイルはユーザーのグループではなくディレクトリを所有するグループに割り当てられます。

root 権限を取得するための setgid アクセス権の承認されていない使用がないかどうか、システムをモニターするようにしてください。疑わしいアクセス権によって、このようなプログラムへのグループアクセス権が、rootbin ではなく、意外なグループに与えられることがあります。このようなアクセス権を使用しているファイルをすべて検索し、一覧表示する方法は、特殊なファイルアクセス権が設定されたファイルを見つける方法を参照してください。

スティッキービット

「スティッキービット」は、ディレクトリ内のファイルを保護するアクセス権ビットです。ディレクトリにスティッキービットが設定されている場合、ファイルを削除できるのは、ファイルの所有者、ディレクトリの所有者、または特権ユーザーのみです。特権ユーザーの例として root ユーザーが挙げられます。スティッキービットにより、ユーザーは /tmp などの公開ディレクトリからほかのユーザーのファイルを削除できなくなります。

drwxrwxrwt 7  root  sys   400 Sep  3 13:37 tmp

TMPFS ファイルシステム上でスワップファイルを作成するか公開ディレクトリを設定するときには、スティッキービットを手動で設定してください。手順については、使用例 5を参照してください。

umask のデフォルト値

ファイルやディレクトリを作成するときには、デフォルトのアクセス権が設定されます。このシステムデフォルトは変更が可能です。テキストファイルのアクセス権は 666 であり、すべてのユーザーに読み取り権と書き込み権を与えます。ディレクトリと実行可能ファイルのアクセス権は 777 で、すべてのユーザーに読み取り権、書き込み権、および実行権を与えます。一般に、ユーザーは .bashrc.kshrc.user などの自分のシェル初期化ファイルでシステムデフォルトをオーバーライドします。管理者は、/etc/profile ファイルでデフォルトを設定することもできます。

umask コマンドによって割り当てられる値は、デフォルトから差し引かれます。この処理には、chmod コマンドでアクセス権を与えるのと同じ方法でアクセス権を拒否する効果があります。たとえば、chmod 022 コマンドはグループとその他のユーザーに書き込み権を与えますが、umask 022 コマンドはグループとその他のユーザーの書き込み権を拒否します。

次の表に、umask の標準的な値とその値が実行可能ファイルに与える影響を示します。

表 3  各セキュリティーレベルの umask 設定
セキュリティーレベル
umask 設定
許可されないアクセス権
緩やか (744)
022
グループとその他のユーザーによる w
中程度 (751)
026
グループによる w、その他のユーザーによる rw
厳密 (740)
027
グループによる w、その他のユーザーによる rwx
厳しい (700)
077
グループとその他のユーザーによる rwx

umask 値の設定の詳細は、umask(1) のマニュアルページを参照してください。

ファイルアクセス権を設定するモード

chmod コマンドを使用すると、ファイルのアクセス権を変更できます。ファイルやディレクトリのアクセス権を変更するには、root またはファイルまたはディレクトリの所有者になる必要があります。

    chmod コマンドを使用して、次のどちらかのモードでアクセス権を設定できます。

  • 絶対モード – 数値を使用してファイルアクセス権を表します。絶対モードを使用してアクセス権を変更するときは、3 つ 1 組のアクセス権を 8 進数で表します。絶対モードは、アクセス権の設定に一番多く使用されている方法です。

  • 記号モード – 文字と記号の組み合わせを使用して、アクセス権を追加したりアクセス権を削除したりします。

次の表に、絶対モードでファイルのアクセス権を設定するための 8 進数値を示します。これらの数字を 3 つ組み合わせて、所有者、グループ、その他のユーザーのファイルアクセス権をこの順に設定します。たとえば、値 644 は、所有者に対して読み取り権と書き込み権を設定し、グループとその他のユーザーに対しては読み取り専用権を設定します。

表 4  絶対モードによるファイルのアクセス権の設定
8 進数値
ファイルのアクセス権
設定されるアクセス権
0
---
なし
1
--x
実行権のみ
2
-w-
書き込み権のみ
3
-wx
書き込み権と実行権
4
r--
読み取り権のみ
5
r-x
読み取り権と実行権
6
rw-
読み取り権と書き込み権
7
rwx
読み取り権、書き込み権、実行権

次の表に、記号モードでファイルアクセス権を設定するための記号を示します。記号では、アクセス権を設定または変更できる対象ユーザー、実行される操作、あるいは割り当てるまたは変更するアクセス権を指定できます。

表 5  記号モードによるファイルのアクセス権の設定
記号
機能
説明
u
<対象ユーザー>
ユーザー (所有者)
g
<対象ユーザー>
グループ
o
<対象ユーザー>
その他のユーザー
a
<対象ユーザー>
すべて
=
オペレータ
割り当て
+
オペレータ
追加
-
オペレータ
削除
r
アクセス権 (アクセス権ビット)
読み取り
w
アクセス権 (アクセス権ビット)
書き込み
x
アクセス権 (アクセス権ビット)
実行
l
アクセス権 (アクセス権ビット)
強制ロック、setgid ビットはオン、グループ実行ビットはオフ
s
アクセス権 (アクセス権ビット)
setuid または setgid ビットはオン
t
アクセス権 (アクセス権ビット)
スティッキービットはオン、その他の実行ビットはオン

機能列に <対象ユーザー> <操作> <アクセス権> の順で、ファイルまたはディレクトリのアクセス権を変更する記号を指定します。

who

アクセス権を変更する対象となるユーザーを指定します。

operator

実行する操作を指定します。

permissions

変更するアクセス権を指定します。

絶対モードまたは記号モードで、ファイルに特殊なアクセス権を設定できます。しかし、ディレクトリに setuid アクセス権を設定する場合と、ディレクトリからこのアクセス権を削除する場合は、記号モードを使用する必要があります。絶対モードでは、3 つ 1 組のアクセス権の左端に新しい 8 進数値を追加して、特殊なアクセス権を設定します。使用例 5を参照してください。次の表に、ファイルに特殊なアクセス権を設定する 8 進数値を示します。

表 6  絶対モードによる特殊なファイルアクセス権の設定
8 進数値
特殊なファイルアクセス権
1
スティッキービット
2
setgid
4
setuid