Solaris のシステム管理

特殊なファイルアクセス権 (setuidsetgid、スティッキビット)

実行可能ファイルと公共ディレクトリには、3 つの特殊なアクセス権を使用できます。これらのアクセス権を設定すると、その実行可能ファイルを実行するユーザーは、そのファイルの所有者 (またはグループ) のアクセス権を持ちます。

特殊アクセス権はセキュリティ上のリスクを伴うので、設定時には細心の注意を払わなければなりません。たとえば、ユーザーはユーザー ID を root に設定するプログラムを実行して、スーパーユーザーアクセス権を取得できます。

システムを監視し、setuidsetgid アクセス権をアクセス権なしに使用して、スーパーユーザー特権が取得されていないかどうかに絶えず注意する必要があります。これらのアクセス権を使用してファイルシステムを検索する方法と全プログラムのリストを出力する方法については、setuid アクセス権が設定されているファイルを検索する方法」を参照してください。この種のプログラムの所有権を binsys 以外のユーザーに与えている場合が出力の中にあれば、セキュリティ違反の可能性があります。これらのアクセス権はスーパーユーザーしか設定できません。

setuid アクセス権

set-user 識別 (setuid) アクセス権を実行可能ファイルに設定すると、このファイルを実行するプロセスには、プロセスを生成したユーザーではなく、ファイルの所有者 (通常は root) に基づいてアクセス権が与えられます。このため、通常は所有者しか利用できないファイルやディレクトリにユーザーがアクセスできます。たとえば次に示すように、passwd コマンドは root の setuid アクセス権が設定されているので、ユーザーは root の権限でパスワードを変更できます。

-r-sr-sr-x   1 root     sys        10332 May  3 08:23 /usr/bin/passwd

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


注 -

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


setgid アクセス権

set-group 識別 (setgid) アクセス権は setuid に似ていますが、プロセスの実効グループ ID (GID) はファイルのグループ所有者に変更され、ユーザーにはそのグループに与えられたアクセス権に基づくアクセス権が与えられます。/usr/bin/mail プログラムには setgid アクセス権が設定されています。

-r-x--s--x   1 bin      mail       62504 May  3 07:58 /usr/bin/mail

setgid アクセス権がディレクトリに適用されると、このディレクトリ内で作成されたファイルは、生成するプロセスが所属するグループではなく、ディレクトリが所属するグループに含まれることになります。ディレクトリ内で書き込み権を持つユーザーは、そこでファイルを作成できます。ただし、そのファイルは、そのユーザーのグループではなく、ディレクトリのグループに所属することになります。

管理者は、setuid アクセス権や setgid アクセス権の認証されていない使用によってスーパーユーザー特権が獲得されないようにシステムを監視しなければなりません。ファイルシステムを検索して、このようなアクセス権を使用しているすべてのプログラムのリストを出力する方法については、setuid アクセス権が設定されているファイルを検索する方法」を参照してください。このようなプログラムの所有権が、binsys ではなく、一般ユーザーになっているものが疑わしいと考えられます。これらのアクセス権を設定できるのは、スーパーユーザーだけです。

スティッキビット

「スティッキビット」は、ディレクトリ内のファイルを保護するアクセス権ビットです。ディレクトリにスティッキビットが設定されている場合、そのファイルを削除できるのはその所有者、ディレクトリの所有者、または root だけです。これにより、ユーザーは uucppublic などの公共ディレクトリから他のユーザーのファイルを削除できなくなります。

drwxrwxrwt   2 uucp     uucp     512 May 24 09:48 /var/spool/uucppublic

TMPFS ファイルシステム上で公共ディレクトリを設定するときには、スティッキビットを手作業で設定してください。