Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

ファイルシステムと非大域ゾーン

この節では、ゾーンがインストールされている Solaris システムでファイルシステムを使用する場合の問題について説明します。各ゾーンは、ゾーンの root と呼ばれるディレクトリをルートとする、ファイルシステム階層の独自領域を保持します。ゾーン内のプロセスは、ゾーンルート以下の階層部分内のファイルだけにアクセスできます。ゾーン内で chroot ユーティリティーを使用できますが、プロセスをゾーン内のルートパスに制限する場合だけです。chroot の詳細については、chroot(1M) のマニュアルページを参照してください。

-o nosuid オプション

mount ユーティリティーで -o nosuid オプションを指定する場合、次の機能を利用できます。

mount(1M) のマニュアルページに記載されているように、このファイルシステム固有オプションは、mount ユーティリティーでマウントできるすべての Solaris ファイルシステムで使用できます。これらのファイルシステムの一覧については、このマニュアルの 「ゾーン内でのファイルシステムのマウント」を参照してください。マウント機能についても説明します。-o nosuid オプションの詳細は、『Solaris のシステム管理 (ネットワークサービス)』の「ネットワークファイルシステムへのアクセス (リファレンス)」を参照してください。

ゾーン内でのファイルシステムのマウント

ファイルシステムをゾーン内部でマウントする場合、nodevices オプションが適用されます。たとえば、ゾーンに、UFS ファイルシステムに対応するブロックデバイス (/dev/dsk/c0t0d0s7) および raw デバイス (/dev/rdsk/c0t0d0s7) へのアクセスが許可される場合、ゾーン内部からマウントを行うと、ファイルシステムのマウントで自動的に nodevices オプションが適用されます。この規則は、zonecfg 構成を使用して指定されたマウントには適用されません。

次の表に、非大域ゾーン内でファイルシステムをマウントする場合のオプションを示します。これらの補助的なマウント方法の実行手順については、「ゾーンを構成、検証、および確定する」および 「稼働中の非大域ゾーン内でファイルシステムをマウントする」を参照してください。

/usr/lib/fstype/mount 内にマウントバイナリが存在する場合、表に含まれない任意のファイルシステムタイプを構成内で指定できます。

ファイルシステム 

非大域ゾーン内のマウントオプション 

AutoFS 

マウントに zonecfg を使用することはできません。大域ゾーンから非大域ゾーン内に手動でマウントすることもできません。ゾーン内部からマウントすることは可能です。

CacheFS 

非大域ゾーン内では使用できません。 

FDFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

HSFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

LOFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

MNTFS 

マウントに zonecfg を使用することはできません。大域ゾーンから非大域ゾーン内に手動でマウントすることもできません。ゾーン内部からマウントすることは可能です。

NFS 

マウントに zonecfg を使用できません。ゾーン内で現在サポートされているバージョンである V2、V3、および V4 を、ゾーン内からマウントできます。

PCFS  

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

PROCFS 

マウントに zonecfg を使用することはできません。大域ゾーンから非大域ゾーン内に手動でマウントすることもできません。ゾーン内部からマウントすることは可能です。

TMPFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

UDFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

UFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

XMEMFS 

zonecfg を使用してマウントできます。大域ゾーンから非大域ゾーン内に手動でマウントできます。ゾーン内部からマウントできます。

このファイルシステムのサポートは、Solaris システムの将来のリリースから削除される予定です。 

ZFS 

zonecfg dataset および fs 資源タイプを使用してマウントできます。

詳細は、「ゾーンの構成方法」「稼働中の非大域ゾーン内でファイルシステムをマウントする」、および mount(1M) のマニュアルページを参照してください。

ゾーン内でのファイルシステムのマウント解除

ファイルシステムをマウント解除できるかどうかは、どの管理者がそのファイルシステムを最初にマウントしたかによって決まります。zonecfg コマンドを使用してゾーンを構成するときにファイルシステムが指定されている場合は、大域ゾーンがそのマウントの所有者となるので、非大域ゾーンの管理者はそのファイルシステムのマウントを解除することはできません。非大域ゾーンの /etc/vfstab ファイルにマウントを指定するなどの方法でファイルシステムが非大域ゾーンからマウントされている場合には、その非大域ゾーンの管理者はそのファイルシステムのマウントを解除できます。

セキュリティーの制限およびファイルシステムの動作

ゾーン内部から特定のファイルシステムをマウントする場合、適用されるセキュリティーの制限が存在します。ほかのファイルシステムは、ゾーン内でマウントされたときに特有の動作を行います。変更されたファイルシステムの一覧を、次に示します。

AutoFS

autofs は、自動的に適切なファイルシステムをマウントするためのクライアント側のサービスです。クライアントが現在マウントされていないファイルシステムにアクセスしようとすると、AutoFS ファイルシステムはその要求に介入し、automountd を呼び出して要求されたディレクトリをマウントします。ゾーン内で確立された AutoFS マウントは、そのゾーンだけで有効です。大域ゾーンを含むほかのゾーンからそのマウントにアクセスすることはできません。ゾーンが停止または再起動すると、マウントは削除されます。AutoFS の詳細は、『Solaris のシステム管理 (ネットワークサービス)』「autofs のしくみ」を参照してください。

各ゾーンは、automountd の独自コピーを実行します。自動マップおよびタイムアウトは、ゾーン管理者により制御されます。大域ゾーンから非大域ゾーンの AutoFS マウントポイントを横断的に使用して、別のゾーン内でマウントを始動させることはできません。

別のマウントが始動する際、カーネル内で特定の AutoFS マウントが作成されます。この種のマウントは、一括してマウントまたはマウント解除する必要があるため、通常の umount インタフェースを使用して削除することはできません。この機能は、ゾーンの停止処理用であることに注意してください。

MNTFS

MNTFS は、ローカルシステムのマウント済みファイルシステムのテーブルに読み取り専用アクセスを提供する仮想ファイルシステムです。非大域ゾーン内から mnttab を使用して表示可能なファイルシステムのセットは、ゾーン内でマウントされたファイルシステムセットおよびルート (/) のエントリで構成されます。/dev/rdsk/c0t0d0s0 などの、ゾーン内からアクセス不可能な特殊なデバイスを保持するマウントポイントは、マウントポイントと同じ特殊なデバイスセットを保持します。システム内のすべてのマウントが、大域ゾーンの /etc/mnttab テーブルから表示可能になります。MNTFS の詳細は、『Solaris のシステム管理 (デバイスとファイルシステム)』の第 18 章「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。

NFS

ゾーン内部で確立された NFS マウントは、そのゾーンでのみ有効です。大域ゾーンを含むほかのゾーンからそのマウントにアクセスすることはできません。ゾーンが停止または再起動すると、マウントは削除されます。

mount_nfs(1M) のマニュアルページに記載されているように、NFS サーバーが独自のファイルシステムのマウントを試みることはできません。このため、大域ゾーンによりエクスポートされたファイルシステムを、ゾーンが NFS マウントしてはいけません。ゾーンを NFS サーバーにすることはできません。ゾーン内部からの NFS マウントは、nodevices オプションを使用してマウントされたかのように動作します。

nfsstat コマンドの出力は、コマンドが実行されたゾーンにのみ関係があります。たとえば、コマンドが大域ゾーン内で実行される場合、大域ゾーンに関する情報だけが出力されます。nfsstat コマンドの詳細は、nfsstat(1M) のマニュアルページを参照してください。

開かれているファイルのいずれか、またはそのアドレス空間のいずれかの部分が NFS 上に存在する場合、zlogin コマンドは失敗します。詳細は、zlogin コマンド」を参照してください。

PROCFS

PROCFS とも呼ばれる /proc ファイルシステムは、プロセスの可視性とアクセス制限、およびプロセスのゾーン関連性に関する情報を提供します。/proc では、同じゾーン内のプロセスだけを表示できます。

大域ゾーン内のプロセスから、非大域ゾーン内のプロセスおよびほかのオブジェクトを監視できます。これにより、この種のプロセスがシステム規模の監視機能を備えることが可能になります。

ゾーン内部からは、procfs マウントは nodevices オプションを使用してマウントされたかのように動作します。procfs の詳細は、proc(4) のマニュアルページを参照してください。

LOFS

LOFS でマウント可能なファイルシステムの範囲は、ゾーンで表示可能なファイルシステム部分に限定されています。このため、ゾーン内での LOFS マウントには制限はありません。

UFS、UDFS、PCFS、およびその他のストレージに基づいたファイルシステム

zonecfg コマンドを使用して、UFS などの fsck バイナリを保持するストレージに基づいたファイルシステムを構成する場合、ゾーン管理者は raw パラメータを指定する必要があります。このパラメータは、/dev/rdsk/c0t0d0s7 などの raw (文字) デバイスを示します。zoneadmd は、このデバイス上で fsck コマンドを非対話型の検査専用モード (fsck -m) で自動実行してから、ファイルシステムをマウントします。fsck が失敗した場合、zoneadmd を使用してゾーンを準備完了状態にすることはできません。raw により指定されるパスを、相対パスにするこ とはできません。

/usr/lib/ fstype/fsck 内で fsck バイナリを提供しないファイルシステムで、デバイスを fsck に指定するのは誤りです。また、そのファイルシステムに fsck バイナリが存在する場合に、デバイスを fsck に指定しないことも誤りです。

詳細は、zoneadmd デーモン」および fsck(1m) のマニュアルページを参照してください。

ZFS

zonecfg コマンドに add dataset 資源を指定して実行することにより、非大域ゾーンに ZFS データセットを追加できます。データセットは非大域ゾーンでマウントされ可視になり、大域ゾーンでは不可視になります。ゾーン管理者は、そのデータセット内のファイルシステムの作成と破棄、クローンの作成と破棄、およびデータセットのプロパティーの変更を行うことができます。

zfszoned 属性は、データセットが非大域ゾーンに追加されたかどうかを示します。


# zfs get zoned tank/sales
NAME          PROPERTY    VALUE      SOURCE
tank/sales    zoned       on         local

大域ゾーンのデータセットを共有する場合は、zonecfg コマンドとともに add fs サブコマンドを使用して、LOFS マウントした ZFS ファイルシステムを追加できます。大域管理者は、データセットのプロパティーの設定および制御を担当します。

ZFS の詳細については、『Oracle Solaris ZFS 管理ガイド』の第 10 章「Oracle Solaris ZFS の高度なトピック」を参照してください。

NFS クライアントとして機能する非大域ゾーン

ゾーンは、NFS クライアントとしても機能できます。バージョン 2、バージョン 3、およびバージョン 4 プロトコルがサポートされます。これらの NFS バージョンの詳細は、『Solaris のシステム管理 (ネットワークサービス)』「NFS サービスの機能」を参照してください。

デフォルトのバージョンは、NFS バージョン 4 です。次のいずれかの方法を使用して、クライアント上でほかの NFS バージョンを有効にできます。

ゾーン内での mknod の使用禁止

mknod(1M) のマニュアルページに記載されているように、mknod コマンドを使用して、非大域ゾーン内で特殊ファイルを作成することはできません。

ファイルシステムの行き来

ゾーンのファイルシステム名前空間は、大域ゾーンからアクセス可能な名前空間の一部です。大域ゾーン内の特権のないプロセスが、非大域ゾーンのファイルシステム階層を行き来することはできません。これには、次のような理由があります。

別のゾーン用にマウントされた AutoFS ノードへのアクセスを試みても、失敗します。大域管理者は、その子孫がほかのゾーンに含まれる自動マップを保持してはいけません。

大域ゾーンから非大域ゾーンにアクセスする際の制限

非大域ゾーンのインストール後に、システムのバックアップユーティリティー以外のコマンドを使用して、大域ゾーンからそのゾーンに直接アクセスしてはいけません。また、非大域ゾーンを未知の環境に公開した後は、そのゾーンが安全であると考えることはできません。たとえば、公開されたネットワーク上に配置されたゾーンについて考えてみましょう。この場合、ゾーンのセキュリティーが低下し、ファイルシステムの内容が変更される可能性があります。セキュリティーが低下する可能性がある場合、大域管理者はゾーンを信頼できないものとして処理する必要があります。

次の両方の条件が当てはまる場合、-R オプションまたは -b オプション (またはこれと同等なオプション) を使って代替ルートを指定可能なコマンドを使用してはいけません。

たとえば、pkgadd ユーティリティーに -R root_path オプションを指定して、非大域ゾーンのルートパスを保持する大域ゾーンから実行する場合が、この条件に該当します。

次に、-R と代替ルートパスを使用するコマンド、プログラム、およびユーティリティーを一覧表示します。

次に、-b と代替ルートパスを使用するコマンドおよびプログラムを一覧表示します。