autofs は 3 種類のマップを使用します。
マスタマップ
直接マップ
間接マップ
auto_master マップでは、ディレクトリからマップへの関連付けを行います。これは、すべてのマップを指定するマスタリストであり、autofs が参照します。auto_master ファイルの内容の例を示します。
表 5-1 /etc/auto_master ファイルの例
# cat /etc/auto_master # Master map for automounter # +auto_master /net -hosts -nosuid,nobrowse /home auto_home -nobrowse /xfn -xfn /- auto_direct -ro |
この例では、汎用の auto_master ファイルに auto_direct マップのための追加が行われています。マスタマップ /etc/auto_master の各行は、次の構文に従っています。
mount-point map-name [ mount-options ]
mount-point はディレクトリのフル (絶対) パス名です。このディレクトリが存在しない場合、可能ならば autofs はこれを作成します。このディレクトリが存在し、しかも空ではない場合、マウントすることによってその内容が隠されます。この場合、autofs は警告を出します。
マウントポイントとして /- を指定すると、マップが直接マップであり、このマップ全体に関連付けられている特定のマウントポイントがないことを表します。
map-name 名は、位置に対する指示またはマウント情報を検出するために、autofs が使用するマップです。この名前がスラッシュ (/) で始まる場合、autofs はこの名前をローカルファイルとして解釈します。そうでない場合、autofs はネームサービススイッチ構成ファイルで指定される検索によりマウント情報を検索します。/net と /xfn に対して使われる特殊なマップもあります (「マウントポイント /net」 と「マウントポイント /xfn」 を参照してください)。
mount-options は、オプションです。map-name のエントリに他のオプションがある場合を除き、map-name で指定されたエントリのマウントに適用されるオプションをカンマで区切って並べます。これらのマウントオプションは、標準の NFS マウント用のものと同じですが、bg (バックグラウンド) と fg (フォアグラウンド) は使用できません。「mount」 を参照してください。具体的なファイルシステムごとのオプションについては、そのファイルシステムのマニュアルページで「mount」を参照してください (たとえば NFS 固有のマウントオプションについては、mount_nfs(1M))。NFS 固有のマウントポイントの場合、bg (バックグラウンド) オプションと fg (フォアグラウンド) オプションは適用されません。
# で始まる行はコメント行です。この場合、その行の最後まですべて無視されます。
長い行を短い行に分割するには、行末にバックスラッシュ (¥) を入力します。入力できる文字数の上限は 1024 です。
マウントポイント /home は、/etc/auto_home (間接マップ) に記述されたエントリがマウントされるディレクトリです。
autofs はすべてのコンピュータで動作し、デフォルトでは /net と /home (自動マウントされるホームディレクトリ) をサポートします。このデフォルトは、NIS ならば auto.master マップ、NIS+ ならば auto_master テーブルを使って、またはローカルの /etc/auto_master ファイルを編集することによって変更できます。
autofs は、特別のマップ -hosts 内の全エントリをディレクトリ /net の下にマウントします。これは hosts データベースだけを使用する組み込みマップです。たとえば、コンピュータ gumbo が hosts データベース内にあり、しかもそのファイルシステムのどれかをエクスポートする場合、次のコマンドによって、カレントディレクトリがコンピュータ gumbo のルートディレクトリに変更されます。
%cd /net/gumbo |
なお、autofs はホスト gumbo のエクスポートされたファイルシステムだけをマウントできます。つまり、ローカルディスク上のファイルシステムではなく、ネットワークユーザが使用できるサーバ上のファイルシステムです。したがって、gumbo にあるすべてのファイルとディレクトリは、/net/gumbo では利用できない場合があります。
/net を使ったアクセスでは、サーバ名はパスの中に指定されるため、位置に依存します。したがって、エクスポートされるファイルシステムを別のサーバに移動すると、そのパスは使えなくなります。このような場合は /net を使わずに、そのファイルシステムに対応するエントリをマップの中に設定します。
autofs はマウント時だけサーバのエクスポートリストを調べます。サーバのファイルシステムが一度マウントされると、そのファイルシステムがアンマウントされ、次にマウントされるまで autofs はそのサーバをチェックしません。したがって、新たにエクスポートされたファイルシステムは、それがサーバからアンマウントされ、再度マウントされるまでは見えません。
このマウントポイントは、FNS 名前空間を使って共有されるリソースの autofs ディレクトリ構造がマウントされます (FNS について詳細は、『Solaris ネーミングの設定と構成』を参照してください)。
直接マップは自動マウントポイントです。つまり、直接マップによって、クライアント上のマウントポイントとサーバ上のディレクトリが直接対応付けられます。直接マップには完全なパス名があり、明示的に関係を示します。 以下に一般的な /etc/auto_direct マップを示します。
/usr/local -ro ¥ /bin ivy:/export/local/sun4 ¥ /share ivy:/export/local/share ¥ /src ivy:/export/local/src /usr/man -ro oak:/usr/man ¥ rose:/usr/man ¥ willow:/usr/man /usr/games -ro peach:/usr/games /usr/spool/news -ro pine:/usr/spool/news ¥ willow:/var/spool/news |
key [ mount-options ] location
key は直接マップでのマウントポイントのパス名です。
mount-options は、このマウントに適用したいオプションです。これらのオプションは、マップのデフォルトと異なる場合だけ必要です。各ファイルシステムの種類ごとのオプションについては、そのファイルシステムのマニュアルページで「mount」を参照してください (たとえば cachefs に固有のマウント操作については、マニュアルページの mount_cachefs(1M) を参照してください)。
location にはファイルシステムの位置を、NFS ファイルシステムならば server:pathname、High Sierra ファイルシステム (HSFS) ならば :devicename という形式で指定します。
pathname には自動マウントしたマウントポイントを含めず、ファイルシステムへの実際の絶対パスである必要があります。たとえば、ホームディレクトリの位置は、server:/home/username ではなく、server:/export/home/username として表示する必要があります。
マスタマップと同様、# で始まる行はコメントです。その行のテキストの最後まですべて無視されます。長い行を短い行に分割するには、行の最後にバックスラッシュを入力します。
すべてのマップの中で、直接マップのエントリが、/etc/vfstab (vfstab にはマウントされるすべてのファイルシステムのリストが含まれる) で対応するエントリと一番単純な形式において最もよく似ています。/etc/vfstab に現れるエントリは次のようになります。
dancer:/usr/local - /usr/local/tmp nfs - yes ro |
直接マップでは次のようになります。
/usr/local/tmp -ro dancer:/usr/local |
オートマウンタマップの間では、オプションの連結はされません。あるオートマウンタマップでオプションが追加されると、それまでに見つかったマップに指定されているオプションはすべて無視され、新しいオプションだけが使われます。たとえば、auto_master マップに指定されているオプションは、他のマップの中の対応するエントリによって上書きされます。
この種類のマップについては、ほかにも重要な機能があります。「autofs がクライアント用の最も近い読み取り専用ファイルを選択する方法 (複数ロケーション)」 を参照してください。
表 5-1 にある /- というマウントポイントは、auto_direct の中のエントリを具体的なマウントポイントに関連付けないように autofs に指示します。間接マップの場合は、auto_master ファイルに定義されたマウントポイントを使います。直接マップの場合は、ここに示されたマップの中で指定されたマウントポイントを使います (直接マップのキーとマウントポイントはフルパス名であることに注意してください)。
NIS または NIS+ の auto_master ファイルには、直接マップのエントリは 1 つしか存在できません。マウントポイントは 1 つの名前空間の中で一意でなければならないためです。auto_master がローカルファイルならば、重複しないかぎり直接マップのエントリがいくつあってもかまいません。
間接マップは、キーの置換値を使用してクライアント上のマウントポイントとサーバ上のディレクトリとを対応させます。間接マップは、ホームディレクトリなどの特定のファイルシステムをアクセスするのに便利です。auto_home マップは間接マップの一例です。
key [ mount-options ] location
key は間接マップでの単純名 (スラッシュなし) です。
mount-options は、このマウントに適用するオプションです。これらのオプションが必要なのは、マップのデフォルトと異なる場合だけです。各ファイルシステムタイプごとのオプションについては、そのファイルシステムのマニュアルページで「mount」を参照してください (たとえば NFS 固有のマウントオプションについては、マニュアルページの mount_nfs(1M)を参照してください)。
location はファイルシステムステムの位置を示し、server:pathname により (1 つまたは複数) 指定されます。
pathname には自動マウントしたマウントポイントを含めず、ファイルシステムへの実際の絶対パスである必要があります。たとえば、ディレクトリの位置は、server:/net/server/usr/local ではなく、server:/usr/local として表示する必要があります。
マスタマップと同様、# で始まる行はコメントです。その行のテキストの最後まですべて無視されます。長い行を短い行に分割するには、行の最後にバックスラッシュ (¥) を入力します。表 5-1 に、次のエントリを含む auto_master マップを示します。
/home auto_home -nobrowse |
auto_home は、/home のもとでマウントされるエントリを含む間接マップの名前です。一般的な auto_home マップには以下の構文が含まれます。
david willow:/export/home/david rob cypress:/export/home/rob gordon poplar:/export/home/gordon rajan pine:/export/home/rajan tammy apple:/export/home/tammy jim ivy:/export/home/jim linda -rw,nosuid peach:/export/home/linda |
例として、前のマップがホスト oak にあると想定します。ユーザ linda がホームディレクトリを /home/linda として指定するパスワードデータベースにエントリがある場合、コンピュータ oak にログインするたびに、autofs はコンピュータ peach に常駐する /export/home/linda ディレクトリをマウントします。彼女のホームディレクトリは、読み書き可能な nosuid にマウントされます。
次のような状況が発生したと想定してください。ユーザ linda のホームディレクトリがパスワードデータベースに、/home/linda として表示されます。Linda も含め誰でも、前の例のマップを参照するマスタマップで設定されたどのコンピュータからでも、このパスにアクセスできます。
こうした状況のもとでは、ユーザ linda はこれらのどのコンピュータでも login や rlogin を実行し、代わりに彼女用のホームディレクトリをマウントさせることができます。
さらに、これで linda は次のコマンドも入力できます。
% cd ‾david |
autofs は彼女のために David のホームディレクトリをマウントします (すべてのアクセス権で許可されている場合)。
オートマウンタマップの間には、オプションの連結はありません。オートマウンタマップに追加されたいずれのオプションも、前に検索されたマップに表示されているすべてのオプションを上書きします。たとえば、auto_master マップに含まれているオプションは、その他いずれのマップの対応するエントリによって上書きされます。
ネームサービスのないネットワークでこれを行うには、ネットワーク上のすべてのシステムで、すべての関連ファイル (/etc/passwd など) を変更する必要があります。NIS では、NIS マスタサーバで変更を行い、関連するデータベースをスレーブのデータベースに伝達します。NIS+ を稼働中のネットワークでは、変更後に関連データベースがスレーブサーバに自動的に伝達されます。