Go to main content
Oracle® Solaris ゾーンの作成と使用

印刷ビューの終了

更新: 2016 年 11 月
 
 

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

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

–o nosuid オプション

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

  • nosetuid オプションを使用してマウントされたファイルシステム上の setuid バイナリに基づくプロセスは、setuid バイナリの権限では動作しません。プロセスは、バイナリを実行するユーザーの権限で動作します。

    たとえば、ユーザーが root の所有する setuid バイナリを実行する場合、プロセスはそのユーザーの権限で動作します。

  • ファイルシステム内のデバイス特殊エントリを開くことはできません。この動作は、nodevices オプションを指定する場合と同じです。

mount(1M) のマニュアルページに記載されているように、このファイルシステム固有のオプションは、mount ユーティリティーでマウントできるすべての Oracle Solaris ファイルシステムで使用できます。これらのファイルシステムの一覧については、このガイドの ゾーン内でのファイルシステムのマウントを参照してください。マウント機能についても説明します。–o nosuid オプションの詳細は、Managing Network File Systems in Oracle Solaris 11.2 の 第 7 章, Accessing Network File Systemsを参照してください。

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

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

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

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

非大域ゾーンの内部から HSFS と NFS 以外のファイルシステムタイプをマウントするには、zonecfg fs-allowed プロパティーを使用して、構成にファイルシステムタイプも追加します。

デフォルト以外のファイルシステムマウントを許可すると、ゾーン管理者によってシステムが危険にさらされることがあります。

ファイルシステム
非大域ゾーン内のマウントオプション
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 を使用してマウントできます。ゾーン内からマウントできます。

注 -  quota コマンド (quota(1M) を参照) は、zonecfg add fs リソースを使用して追加された UFS ファイルシステムの割り当て情報の取得に使用することはできません。

add fs を使用する場合は、system/file-system/ufs パッケージを大域ゾーンにインストールする必要があります。zonecfg コマンドを使用して非大域ゾーンで UFS ファイルシステムを使用する場合は、インストール後にこのパッケージをゾーンにインストールするか、AI マニフェストスクリプトを使用してインストールする必要があります。

次を 1 行で入力します。

global# pkg -R /tank/zones/my-zone/root \
install system/file-system/ufs

VxFS
zonecfg を使用してマウントできます。ゾーン内からマウントできます。
ZFS
zonecfg dataset および fs リソースタイプを使用してマウントできます。

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

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

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

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

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

AutoFS

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

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

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

MNTFS

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

NFS

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

ゾーン内部からの NFS マウントは、nodevices オプションを使用してマウントされたかのように動作します。

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

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 コマンドを preen モード (fsck –p) で自動的に実行します。このコマンドは、ファイルシステムをマウントする前に、非対話的にファイルシステムを検査および修正します。fsck が失敗した場合、zoneadmd を使用してゾーンを準備完了状態にすることはできません。raw により指定されるパスを、相対パスにするこ とはできません。

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

詳細は、zoneadmd デーモンおよび fsck(1M) コマンドを参照してください。

ZFS

デフォルトのデータセット (Oracle Solaris ゾーン構成リソース の ゾーンでマウントされるファイルシステムに記載) に加えて、zonecfg コマンドに add dataset リソースを付けて実行することにより、ZFS データセットを非大域ゾーンに追加できます。データセットは非大域ゾーンでマウントされ可視になり、大域ゾーンでも可視になります。ゾーン管理者は、そのデータセット内のファイルシステムの作成と破棄、およびデータセットのプロパティーの変更を行うことができます。

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

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

データセットリソースを使用して非大域ゾーンに委任された各データセットには、別名が付けられます。データセットのレイアウトはゾーン内では表示されません。別名が付けられた各データセットは、プールのようにゾーンに表示されます。データセットのデフォルトの別名は、データセット名の最後のコンポーネントです。たとえば、委任されたデータセット tank/sales にデフォルトの別名が使用された場合、ゾーンには sales という仮想 ZFS プールが表示されます。別名が別の値になるようにカスタマイズするには、データセットリソース内の別名プロパティーを設定します。

各非大域ゾーンの zonepath データセット内には、rpool というデータセットが存在します。すべての非大域ゾーンで、ゾーンのこの rpool データセットは rpool として別名が付けられます。

my-zone# zfs list -o name,zoned,mounted,mountpoint
NAME                ZONED  MOUNTED  MOUNTPOINT
rpool                  on       no  /rpool
rpool/ROOT             on       no  legacy
rpool/ROOT/solaris     on      yes  /
rpool/export           on       no  /export
rpool/export/home      on       no  /export/home

データセットの別名は、ZFS プールと同じ名前制限の対象となります。この制限については、zpool(1M) のマニュアルページに記載されています。

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

ZFS の詳細は、Oracle Solaris 11.2 での ZFS ファイルシステムの管理 の 第 9 章, Oracle Solaris ZFS の高度なトピックを参照してください。

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

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

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

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

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

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

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

  • root だけが、ゾーンルートの親ディレクトリを所有、読み込み可能、書き込み可能、および実行可能に指定する

  • /proc によりエクスポートされたディレクトリへのアクセスが制限される

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

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

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

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

  • コマンドが大域ゾーン内で実行される。

  • 代替ルートが非大域ゾーン内のいずれかのパスを参照している。現在動作中のシステムの大域ゾーンからの相対パスの場合や、代替ルート内の大域ゾーンからの相対パスの場合を含む。

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

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

  • auditreduce

  • bart

  • installf

  • localeadm

  • makeuuid

  • metaroot

  • pkg

  • prodreg

  • removef

  • routeadm

  • showrev

  • syseventadm

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

  • add_drv

  • pprosetup

  • rem_drv

  • roleadd

  • update_drv

  • useradd