UNIX ベース アプリケーション用サブシステム (SUA) は、UNIX のシェル、ユーティリティ、およびアプリケーションを Microsoft® Windows® アプリケーションと共にネイティブで実行する、POSIX (Portable Operating System Interface) 準拠のサブシステムを提供します。このトピックでは、POSIX 準拠のオペレーティング システムを必要とするユーザー向けの考慮事項について説明します。

POSIX シェルの互換性

SUA Korn シェルは従来の Korn シェルの動作に準拠し、これは POSIX の動作とほぼ同じです。作業環境によっては厳密な POSIX 準拠が必要となります。その場合は、UNIX ベース アプリケーション用サブシステムのユーティリティおよびソフトウェア開発キット (SDK) のダウンロード パッケージに含まれるヘルプ ファイルの ksh(1) に関するドキュメントを参照してください。Korn シェルと POSIX の相違点について記載されています。

Korn シェルで完全な POSIX.2 準拠を実現するには、Korn シェルを POSIX モードで実行する必要があります。Korn シェルを POSIX モードで実行するには、次のいずれかの操作を行います。

  • Korn シェルを、-o posix オプションを指定して開きます。

  • シェル内からコマンド set -o posix を実行します。

  • POSIXLY_CORRECT シェル パラメーターを設定します。

POSIX 準拠は、C シェルではサポートされていません。Korn シェルと異なり、C シェルには POSIX モードのコマンド オプションがありません。

ディレクトリ アクセス許可の走査チェック

既定では、Windows のユーザーは、パス内の各ディレクトリに対するアクセス許可を持っていなくても、ディレクトリ ツリー内を移動するアクセス許可を持っています。しかし POSIX システムでは、ディレクトリへのパス内にあるすべてのディレクトリに対してアクセス許可を持っていないと、そのディレクトリにアクセスできません。POSIX のこの動作は走査チェックと呼ばれています。たとえば、あるディレクトリに対してアクセス許可を持っていない場合は、そのサブディレクトリに対するアクセス許可を持っていても、現在のディレクトリをそれらのサブディレクトリに変更することはできません。Windows の既定では、サブディレクトリに対してアクセス許可を持っていれば、現在のディレクトリをそれらのサブディレクトリに変更することができます。

Windows では、"フォルダーの走査とファイルの実行" と呼ばれる特別なアクセス許可をユーザーまたはグループに対して設定することができます。このアクセス許可を設定することで、ディレクトリ ツリー内の移動を許可または拒否することができます。"フォルダーのスキャン" アクセス許可は、[グループ ポリシー] スナップインで、グループまたはユーザーに "走査チェックのバイパス" ユーザー権利が付与されていないときにだけ有効です。Microsoft Windows 2000 では、Everyone グループには既定で "走査チェックのバイパス" ユーザー権利が付与されています。Windows Server® 2008 R2、Windows® 7、Windows Server® 2008、Windows Vista®、Windows Server 2003、および Windows XP オペレーティング システムでは、Administrators、Backup Operators、Everyone、Power Users、および Users のすべてのグループにこの権利が与えられています。POSIX 標準に厳密に準拠するには、Backup Operators グループ以外のすべてのユーザーとグループから [走査チェックのバイパス] ユーザー権利を削除します。他の多くの UNIX 実装の root ユーザーに与えられている特権に準拠するには、Administrators と Backup Oprators グループ以外のすべてのユーザーから [走査チェックのバイパス] ユーザー権利を削除します。

su および setuid に対する特殊な走査チェック動作

su コマンドを使用して別のユーザーとして実行する root ユーザー、setuid プロセスを使用するユーザー (および、setuid 関連の呼び出しを含んだプロセスを使用するユーザー) の動作は、一部のディレクトリ走査権利を保持しているため、上で説明した既定の動作と異なります。

ユーザー アカウントから "走査チェックのバイパス" 権利を削除すると、POSIX 準拠の動作になります。ただし、root ユーザーがパスワードを指定せずに他のユーザーとして su を実行しようとした場合、その結果実行されるセッションの動作は上記の説明と異なります。root ユーザーがパスワードを指定せずに su を実行した後に開始されるプロセスは、ディレクトリ ツリーへのアクセスとツリー内の走査を実行できますが、パス内のすべてのディレクトリに対するアクセス許可を持つとは限りません。

Setuid プロセス、および setuidseteuidsetreuid のいずれかを呼び出すプロセスも同じ動作になります。これらのプロセスを実行するユーザーのアカウントから "走査チェックのバイパス" 権利を削除すると、プロセスはディレクトリ ツリーを走査できますが、パス内のすべてのディレクトリにアクセスできるアクセス許可がない場合があります。

関連項目