OpenVMS
ユーザーズ・マニュアル


前へ 次へ 目次 索引



第 4 章
ディレクトリ・ファイルの編成

ディレクトリは,ファイルの名前と位置を含む特殊なファイルです。たとえば,システム管理者がユーザ・アカウントを作成すると,そのユーザ名と同じ名前を持つディレクトリが作成されます。ユーザ名が JONES の場合,ディレクトリは [JONES] になります。

サブディレクトリ は,別のディレクトリ・ファイルやサブディレクトリ・ファイルの中にあるディレクトリ・ファイルです。サブディレクトリを使用すれば,ファイルを用途ごとに編成することができます。たとえば,メモ用のサブディレクトリと状態レポート用のサブディレクトリを作成することができます。

ディレクトリと同じように,サブディレクトリにも,その中に登録されているファイルの名前とポインタが格納されます。サブディリクトリの中にも別のサブディレクトリを登録することができます。このような構造(最上位ディレクトリとサブディレクトリ)を 階層ディレクトリ構造と呼びます。

ユーザがアクセスするファイルは,ディスクに格納されています。各ディスクにはメイン・ディレクトリがあり,これを MFD(マスタ・ファイル・ディレクトリ) といいます。MFD には,UFD(ユーザ・ファイル・ディレクトリ) を格納します。UFD をユーザの最上位ディレクトリといいます。ほとんどの場合,システム上の各ユーザについて 1 つの UFD が存在します。UFD には,ユーザのディレクトリに登録されているファイルの名前とポインタが格納されます。最上位ディレクトリは,通常はプロセス・デフォルト・ディレクトリです。アカウントを特に変更しない限り,システムは自動的にユーザの最上位ディレクトリをログイン時のプロセス・デフォルト・ディレクトリにします。

完全なファイル指定のデバイス(ディスク)およびディレクトリ部分を一般に ファイル・パス と呼びます。パスは,ファイル名とファイル・タイプ(およびバージョン)とともに,完全なファイル指定を構成します。完全なファイル指定には,システムがファイルを検索して識別するために必要なすべての情報が含まれています。1

部分的なファイル指定に対するシステムによる省略時の設定の適用方法についての詳細は,『 Guide to OpenVMS File Applications 』を参照してください。

本章では,ディレクトリを使用してファイルを編成し,管理する方法を説明します。以下のことについて説明します。

注意

この例ではノード名を指定するときに,アクセス制御文字列を指定していないこともあります。このような例では,代理アカウントを使用すれば,リモート・システムで操作を行えるからです。

Extended File Specifications を使用する環境で作業を行っている場合,ディレクトリ構造と構文は,ここで説明している従来からの構造とは異なります。このような環境でのディレクトリ操作については,第 5 章 を参照してください。

注意

1 ファイルは磁気テープに格納することもできますが,磁気テープはディレクトリ構造ではありません。テープに格納されたファイルにアクセスするには,ファイル情報だけを含んだファイル指定を使用します。

4.1 ディレクトリ構造

図 4-1 に,ディレクトリ階層のサンプルを示します。このディレクトリ構造の最上部は,マスタ・ファイル・ディレクトリ(MFD)です。このマスタ・ファイル・ディレクトリには,[000000] という名前が付けられています。図 4-1 に示す MFD には,ユーザ・ファイル・ディレクトリ MARTINO.DIR,PUBLIC.DIR,JONES.DIR のエントリが登録されています。最上位ディレクトリ [JONES] は,マスタ・ファイル・ディレクトリ [000000] 中の JONES.DIR;1 という名前のユーザ・ファイル・ディレクトリのことです。

図 4-1 に示したサンプル・ディレクトリ構造は,本章の多くの例で使用します。

図 4-1 ディレクトリ構造


以下は,このディレクトリ構造についての説明です。

4.2 ディレクトリとは

ファイル指定のディレクトリの内容は最上位ディレクトリ名(UFD など)からなり,最上位ディレクトリ名の後には多くのサブディレクトリ名を続けて指定できます。サブディレクトリ名はピリオド(.)で区切ります。

バージョン 7.2 より前のバージョンの OpenVMS Alpha および OpenVMS VAX のすべてのバージョンは,UFD と最大 7 つのサブディレクトリ名をサポートします。OpenVMS Alpha バージョン 7.2 およびそれ以降では,ディレクトリに最大 255 の名前(UFD とサブディレクトリ)をサポートします。

ディレクトリ指定は,次の形式になります。


[ディレクトリ.サブディレクトリ] 

1 つ以上のサブディレクトリ・レベルを追加するには,各サブディレクトリごとに,ピリオドとサブディレクトリ名を 1 つ追加します(限度まで)。別のサブディレクトリのサブディレクトリを指定するには,階層で 1 つ上のサブディレクトリにそのサブディレクトリ名(前にピリオドを指定)を結合します。

OpenVMS Alpha バージョン 7.2 より前のバージョン,OpenVMS VAX のすべてのバージョン,および ODS-2 ディスクを使用する OpenVMS Alpha システムでは,サブディレクトリ名は最長 39 文字です。

ODS-5 ディスクを使用する OpenVMS Alpha バージョン 7.2 およびそれ以降では,サブディレクトリ・ファイルが <subdirectory-name>.DIR;1 の形式で保存されるため,サブディレクトリ名はファイル名の制限を受けます。ファイル指定におけるディレクトリとルート名の合計文字数(区切り記号の括弧とピリオドを除く)は 512 文字までです。

4.2.1 ディレクトリの作成

ディレクトリを作成する場合,CREATE/DIRECTORY コマンドを使用します。現在のディレクトリの下にサブディレクトリを作成する場合には,現在のディレクトリ名の代わりにピリオドを指定できます。

たとえば,[JONES.TAXES] ディレクトリを作成する場合には,次のように入力します。


$ CREATE/DIRECTORY [JONES.TAXES]

現在の省略時のディレクトリが [JONES] の場合,次のように入力します。


$ CREATE/DIRECTORY [.LICENSES]

4.2.2 ディレクトリの表示

ディレクトリの中にあるファイルの名前を表示する場合は,DIRECTORY コマンドを使用します。サブディレクトリの中のファイルを表示する場合には,DIRECTORY コマンドにサブディレクトリ名を指定します。

DIRECTORY コマンドに特定のコマンド修飾子を指定すると,ファイルの名前以外の情報を検索することができます。DIRECTORY コマンドで使用できる修飾子については,『OpenVMS DCL ディクショナリ』またはオンライン・ヘルプを参照してください。

たとえば,[JONES] の中のファイルを表示する場合には,次のように入力します。この例では,[JONES] の中に 2 つのサブディレクトリ([JONES.LICENSES] と [JONES.TAXES])と 4 つの非ディレクトリ・ファイル(STAFF.DIS,STAFF_VACATIONS.TXT,および LOGIN.COM の 2 つのバージョン)が入っています。


$ DIRECTORY


Directory DISK1:[JONES] 
 
LICENSES.DIR;1 
LOGIN.COM;3 
LOGIN.COM;4 
STAFF.DIS;3 
STAFF_VACATIONS.TXT;2 
TAXES.DIR;1 
 
Total of 6 files.

省略時のディレクトリが [JONES] である場合,[JONES.LICENSES] サブディレクトリの内容を表示するには,次のように入力します。


$ DIRECTORY [.LICENSES]


Directory DISK1:[JONES.LICENSES] 
 
DEPT.DAT;3 
DOG.DIR;1 
MAILING.LIS;6 
MARRIAGE.DIR;1 
TOTAL.DAT;2 
 
Total of 5 files.

4.2.3 ディレクトリの削除

ディレクトリを削除する場合は,次の手順に従ってください。

手順 操作
1 ディレクトリにファイルが登録されていないことを確認する。ディレクトリにファイルが登録されているかどうかを調べる場合は,DIRECTORY コマンドを入力する。

ディレクトリの中にファイルがない場合には,次のようなメッセージが表示される。

%DIRECT-W-NOFILES, no files found
2 ディレクトリの中にファイルがある場合には,それを別のディレクトリにコピーして保存する。ファイルを保存しない場合には,ファイルを削除する。ディレクトリにサブディレクトリがある場合には,そのサブディレクトリを調べ,中にあるファイルをコピーまたは削除してから,そのサブディレクトリを削除する。
3 削除したいディレクトリより 1 レベル上のディレクトリに移動する。サブディレクトリは,ディレクトリにファイルとして存在する。ディレクトリを削除するには,そのディレクトリを指すファイルを削除する。
4 ファイルの削除が許容されるように,ディレクトリのファイル保護を変更する。マスタ・ファイル・ディレクトリに登録されているディレクトリ・ファイルを削除するためには,SYSPRV 特権が必要。ファイル保護についての詳細は,第 3 章 を参照のこと。
5 DELETE コマンドを使用してディレクトリ・ファイルを削除する。

次の例に,[JONES.LICENSES] サブディレクトリを削除する方法をまとめて示します。


$ SET DEFAULT [JONES.LICENSES]
$ DIRECTORY
%DIRECT-W-NOFILES, no files found
$ SET DEFAULT [JONES]
$ SET SECURITY/PROTECTION=OWNER:D LICENSES.DIR
$ DELETE LICENSES.DIR;1

4.3 省略時のディレクトリの設定

省略時のディレクトリ を変更する場合は,SET DEFAULT コマンドを使用します。新しく変更した省略時の値は,別の SET DEFAULT コマンドを入力するか,システムからログアウトするまで有効です。省略時のサブディレクトリを設定する場合には,それより 1 レベル上のディレクトリの名前に,サブディレクトリ名を追加します。

次の例では,省略時の設定はディレクトリ [JONES] に設定され,ファイル [JONES]STAFF_VACATIONS.TXT が表示されます。


$ SET DEFAULT [JONES]
$ TYPE STAFF_VACATIONS.TXT

次の例では,サブディレクトリ [JONES.TAXES] に格納されているファイル BILLING.DAT が表示されます。


$ SET DEFAULT [JONES.TAXES]
$ TYPE BILLING.DAT

4.3.1 省略時の値を存在しないディレクトリに設定する

このオペレーティング・システムでは,省略時の値を存在しないディスクまたはディレクトリに設定できます。省略時の値を存在しないディレクトリに設定した後,ファイルを操作しようとすると,ディレクトリが存在しないことを示すメッセージが表示されます。現在の設定が存在しないディスクまたはディレクトリであるため,必要な操作を実行できない場合には,省略時の値を既存のディスクまたはディレクトリに設定してください。

4.3.2 SHOW DEFAULT コマンド

現在の省略時のディレクトリを表示する場合には,次の例に示すように,SHOW DEFAULT コマンドを入力します。


$ SHOW DEFAULT
  DISK1:[JONES.TAXES]
$ SET DEFAULT [PUBLIC]
$ SHOW DEFAULT
  DISK1:[PUBLIC]

SET DEFAULT コマンドを使用すると,省略時のデバイスも変更できます。省略時の値は,別の SET DEFAULT コマンドを入力するか,システムからログアウトするまで有効です。コマンドの中にディレクトリを指定しなくても,省略時に設定したいデバイスを指定することができます。

次の例に,省略時のデバイスの変更方法を示します。


$ SHOW DEFAULT
  DISK1:[JONES]
$ SET DEFAULT DISK2:[GROUP]
$ SHOW DEFAULT
  DISK2:[GROUP]

次の例では,[JONES] というディレクトリが,DISK1 と DISK2 の両方のデバイスに存在することを示しています。


$ SHOW DEFAULT
  DISK1:[JONES]
$ SET DEFAULT DISK2:
$ SHOW DEFAULT
  DISK2:[JONES]

4.3.3 一時的な省略時の値の使用

複数のファイルを入力する場合,それぞれのファイルに完全なファイル指定を指定しないと,ノード名,デバイス名,ディレクトリ名に対して一時的な省略時の値が適用されます。現在の省略時のディレクトリを一時的な省略時の値として使用する場合は,空の大括弧を使用します。複数のファイル指定の 1 つにノード名を指定した場合には,ダブルコロンを使用して,一時的な省略時の値を無効にできます。

たとえば,次のコマンドは,[STATS] ディレクトリにある A.LIS と B.LIS ファイルを [RESULTS] ディレクトリにコピーします。


$  COPY [STATS]A.LIS,B.LIS  [RESULTS]

この例において,[STATS] は B.LIS ファイルに対する一時的な省略時のディレクトリとなります。システムは,[STATS]A.LIS の前半のファイル指定を使用して,省略時のディレクトリを判別します。

次のコマンドは,1 つの一時的な省略時のデバイスと 2 つのディレクトリを使用しています。


$  COPY BASE:[STATS]A.LIS,[TIME]B.LIS,C.LIS  [RESULTS]

この例では,3 つのファイル(A.LIS,B.LIS,C.LIS)がすべて BASE デバイスからコピーされています。A.LIS ファイルは [STATS] ディレクトリからコピーされ,残りの 2 つのファイルは [TIME] ディレクトリからコピーされます。

現在の省略時のディレクトリが [BETA] である場合,次のコマンドは,[ALPHA]TEST.DAT と [BETA]FINAL.DAT ファイルを [RESULTS] ディレクトリにコピーします。


$  COPY [ALPHA]TEST.DAT,[]FINAL.DAT  [RESULTS]

4.4 他のユーザからのディレクトリの保護

ファイルを完全に保護するためには,ファイルが格納されているディレクトリにも同じ保護が必要です。たとえば,あるファイルへのアクセスがすべて拒否されているのに,そのファイルのディレクトリへの読み込みアクセスが許可されている場合には,ファイルは存在することを確認できるが中身を見ることができない,という現象が起きます。逆に,あるファイルへのアクセスは許容されているのに,そのファイルのディレクトリ(またはその親ディレクトリ)へのアクセスが拒否されている場合には,そのファイルが存在することさえわかりません。

注意

重要なファイルを保護するためには,ディレクトリ保護だけでは不十分です。ディレクトリの中のそれぞれのファイルも保護しなければなりません。

省略時の設定において,最上位ディレクトリは UIC に基づく保護S:RWE,O:RWE,G:RE,W:E を受け,ACL に基づく保護は受けません。サブディレクトリは,親ディレクトリから UIC に基づく保護を受けます。保護コードについての詳細は,第 10.3 節 を参照してください。

ディレクトリを作成するときに UIC に基づく保護を明示的に指定する場合は,CREATE/DIRECTORY コマンドに /PROTECTION 修飾子を指定します。ディレクトリの ACL はディレクトリ作成時に指定することはできません。既存のディレクトリに対する UIC ベースの保護を変更するには,SET SECURITY/PROTECTION コマンドをディレクトリ・ファイルに適用します。

ディレクトリへのアクセスを禁止せずにある制限を加えるためには,読み込みアクセスを指定せずに実行アクセスを指定します。ディレクトリに対する実行アクセス権がある場合には,そのディレクトリに格納されているファイルを調べたり,読み込むことができます。つまり,ファイル指定がわかっている場合には,そのファイルを調べることができますが,ディレクトリ内のファイルの一覧を表示することはできません。セキュリティについての詳細は,『OpenVMS Guide to System Security』を参照してください。


前へ 次へ 目次 索引