Compaq OpenVMS
システム管理者マニュアル


前へ 次へ 目次 索引


7.8.3 CPU 時間の制約

OpenVMS バージョン 7.3 以降では,SYSMAN インタフェースを使用して,クラス・スケジューリングを実行することができます。

ユーザを スケジューリング・クラス に入れることにより,システム上でそのユーザに割り当てる CPU 時間の量を制限できます。それぞれのスケジューリング・クラスには,システムの全 CPU 時間から一定のパーセントが割り当てられます。システムが実行されると,各スケジューリング・クラスのユーザには,そのクラスに割り当てられたパーセントの CPU 実行時間が上限として課されます。スケジューリング・クラスに対して,ウィンドフォール を有効にすると,そのスケジューリング・クラスのユーザに対し,使用可能な CPU 時間が追加されます。ウィンドフォールを有効にすると,CPU がアイドル状態であり,対象のスケジューリング・クラスが割り当てられた時間を使い果たしたときに,システムから少量の CPU 時間が与えられます。

クラス・スケジューラを起動するには,SYSMAN インタフェースを使用します。 SYSMAN を使用すると,スケジューリング・クラスの作成,削除,変更,一時停止,再開,および表示が行えます。 表 7-7 で SYSMAN コマンド class_schedule とそのサブコマンドについて説明します。

表 7-7 SYSMAN コマンド: class_schedule
サブコマンド 機能
Add 新規のスケジューリング・クラスを作成する。
Delete スケジューリング・クラスを削除する。
Modify スケジューリング・クラスの属性を変更する。
Show スケジューリング・クラスの属性を表示する。
Suspend スケジューリング・クラスを一時的に停止する。
Resume スケジューリング・クラスを再開する

パーマネント・クラス・スケジューラを使用すると,プロセスは,それが適切と判断された場合,プロセス作成時にスケジューリング・クラスに割り当てられます。新規のプロセスを作成するときには,このプロセスがスケジューリング・クラスに属するかどうかを判断する必要があります。この判断は,SYSUAF ファイルのデータに基づいて行われますが,Loginout イメージには,すでにこのプロセスについての SYSUAF ファイルの情報があるので,プロセスがスケジューリング・クラスに属すると判断した場合, Loginout クラスがそのプロセスをスケジューリングします。

SYSMAN コマンドの CLASS_SCHEDULE ADD を使用すると,次のことが行えます。

次に例を示します。


SYSMAN> 
CLASS_SCHEDULE ADD MAINCLASS - 
_SYSMAN> /ACCOUNT = (ACCTNAME1, ACCTNAME2) - 
_SYSMAN> /USERNAME = HOTSHOT - 
_SYSMAN> /CPU_LIMIT = (PRIMARY, 08-17=15, SECONDARY, 00-23=30) - 
_SYSMAN> /WINDFALL 

この例では,次の動作が行われます。

/PRIMEDAYS 修飾子を使用して,スケジューリング・クラスに割り当てられた主曜日と副曜日を変更することができます。

クラス・スケジューラで作成された CPU 時間の制約は,システム・ユーザには適用されません ( 第 12.4.2 項 を参照)。

SYSMAN CLASS_SCHEDULE コマンドの詳細については,『Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル (下巻) 』を参照してください。

7.8.4 ログイン機能の制約

時刻別のログイン制約の他に,AUTHORIZE ユーティリティで /FLAGS を使用することにより,アカウントに機能制約を設定することができます。省略時の設定では,ログイン機能の制約はありません。/FLAGS 修飾子には,次のオプションを指定することができます。

キーワード 意味
[NO]AUDIT 機密保護関連のすべての動作を監査する[またはしない]。
[NO]AUTOLOGIN 自動ログインが有効な場合は,自動ログイン以外のアクセスを禁止する[またはしない]。
[NO]CAPTIVE ログイン時の省略時の値の変更を禁止する[またはしない] (暗黙の DISCTLY)。
  DCL コマンド・レベルのユーザ・アクセスを禁止する [またはしない]。
[NO]DEFCLI 省略時の CLI と CLI テーブルの変更を禁止する[またはしない]。
[NO]DISCTLY Ctrl/Y 割り込みを禁止する[またはしない]。
[NO]DISFORCE_PWD_CHANGE ログイン時に期限切れのパスワードを変更する条件を無効にする [またはしない]。
[NO]DISIMAGE RUN および MCR コマンドの使用と,「フォーリン」コマンドの実行を禁止する[またはしない]。
[NO]DISMAIL ユーザへのメール配送を禁止する[またはしない]。
[NO]DISNEWMAIL "New Mail..." 通知の出力を禁止する[またはしない]。
[NO]DISPWDDIC システム・ディクショナリに基づく新しいパスワードの自動スクリーニングを無効にする[またはしない]。
[NO]DISPWDHIS ユーザの古いパスワードに基づく新しいパスワードの自動検査を無効にする[またはしない]。
[NO]DISRECONNECT ターミナル接続が中断されたときに,既存のプロセスに対する自動的な再接続を禁止する [または禁止しない]。
[NO]DISREPORT ログイン情報 (前回ログイン日付とログイン失敗など) を表示する[またはしない]。
[NO]DISUSER アカウントを完全に使用不可にする[またはしない]。
[NO]DISWELCOME "Welcome to ..." ログイン・メッセージの出力を禁止する [またはしない]。
[NO]GENPWD 生成されたパスワードの使用を求める[または求めない]。
[NO]LOCKPWD パスワードの変更を禁止する[またはしない]。
[NO]PWD_EXPIRED 期限切れのマークをパスワードに付ける[または付けない]。
[NO]PWD2_EXPIRED 期限切れのマークを第 2 パスワードに付ける[または付けない]。
[NO]RESTRICTED ログイン時の省略時の値の変更を禁止する[またはしない]。

7.8.5 制約付きまたは機能別アカウント用ログイン・コマンド・プロシージャの使用法

制約付きまたは機能別アカウント用のログイン・コマンド・プロシージャの定義には,AUTHORIZE の ADD,MODIFY,COPY コマンドに /LGICMD 修飾子を使用します。制約付きまたは機能別アカウントにログインしているユーザは,/CLI,/DISK,/COMMAND,/NOCOMMAND,/TABLES のいずれかのログイン修飾子を使って,ログイン・コマンド・プロシージャを変更することはできません。

CAPTIVE と RESTRICTED フラグは以下のことを実行します。

ログインを終えた制約付きアカウントのユーザは DCL レベルで操作を行い,使用可能な任意のソフトウェアにアクセスすることができます。

システム管理者が次のことを守っている場合,機能別アカウントのユーザは,特定のアプリケーション・ソフトウェアにロックされ, DCL レベルのアクセスは拒否されます。


たとえば,ある在庫システムに使用されている機能別アカウント用の簡単なログイン・コマンド・プロシージャが次のコマンドから構成されていると仮定します。


$ DEFINE SYS$DISK DISK$INVENT 
$ RUN INVENTORY 
$ LOGOUT 

INVENTORY というアプリケーション・プログラムは,ユーザがアカウントへログインすると制御を受け取ります。システム管理者は,AUTHORIZE の /FLAGS=CAPTIVE 修飾子を指定することによって,このアカウントの UAF レコードのログイン・フラグ・フィールドに CAPTIVE フラグを設定しておく必要があります。 AUTHORIZE による機能別アカウントの UAF レコードの作成方法については, 第 7.7.4 項 を参照してください。

例 7-4 は,高度の機密保護が必要な機能別アカウントのコマンド・プロシージャの例です。ユーザが使用可能なコマンドを非常に狭い範囲に限定しています。システム管理者は,アカウント所有者によるログイン・コマンド・プロシージャとそのディレクトリへの書き込み権を確実に拒否する必要があります。また,機密保護管理者は,このアカウントを作成するときに AUTHORIZE の /NOINTERACTIVE 修飾子を使用することになります。

機能別アカウントと制約付きアカウントについての詳細は,『OpenVMS Guide to System Security』を参照してください。

例 7-4 機能別アカウント用のコマンド・プロシージャの例

$ deassign sys$input 
$ previous_sysinput == f$logical("SYS$INPUT") 
$ on error then goto next_command 
$ on control_y then goto next_command 
$ set control=(y,t) 
$ 
$next_command: 
$ on error then goto next_command 
$ on control_y then goto next_command 
$ 
$ if previous_sysinput .nes. f$logical("SYS$INPUT") then deassign sys$input 
$ read/end=next_command/prompt="$ " sys$command command 
$ command == f$edit(command,"UPCASE,TRIM,COMPRESS") 
$ if f$length(command) .eq. 0 then goto next_command 
$ 
$ delete = "delete" 
$ delete/symbol/local/all 
$ if f$locate("@",command) .ne. f$length(command) then goto illegal_command 
$ if f$locate("=",command) .ne. f$length(command) then goto illegal_command 
$ if f$locate("F$",command) .ne. f$length(command) then goto illegal_command 
$ verb = f$element(0," ",command) 
$ 
$ if verb .EQS. "LOGOUT" then goto do_logout 
$ if verb .EQS. "HELP" then goto do_help 
$ 
$ write sys$output "%CAPTIVE-W-IVVERB, unrecognized command \",verb,"\" 
$ goto next_command 
$ 
$illegal_command: 
$ write sys$output "%CAPTIVE-W-ILLEGAL, bad characters in command line" 
$ goto next_command 
$ 
$do_logout: 
$ logout 
$ goto next_command 
$ 
$do_help: 
$ define sys$input sys$command 
$ help 
$ goto next_command 

7.8.6 ユーザ・プロセスに対する優先順位の設定

ユーザの優先順位は,システムがユーザに代わって作成したプロセスをスケジューリングするときに使用される基本優先順位です。

VAX システムの場合,優先順位は最も低い値で 0,最も高い値で 31 です。0 から 15 はタイムシェアリング優先順位,16 から 31 はリアルタイム優先順位になります。

Alpha システムの場合,優先順位は最も低い値で 0,最も高い値で 63 です。0 から 15 はタイムシェアリング優先順位,16 から 63 はリアルタイム優先順位になります。

リアルタイム優先順位のプロセスは,厳密に基本優先順位に従ってスケジューリングされます。言い替えれば,最も高い基本優先順位を持つ実行形式のリアルタイム・プロセスが最初に実行されるということです。タイムシェアリング優先順位のプロセスは,計算や入出力処理が重なって行われるよう,これとは少し異なる原理に従ってスケジューリングされます。

UAF のユーザ・アカウント・レコードでは,ユーザの優先順位の省略時の値は 4 です。実用的には,最小値は 0 です。タイムシェアリング・ユーザの優先順位は必ず省略時の設定のままにしておいてください。システムは小さな基本優先順位の違いにも敏感に反応しますから,一部のユーザだけ優先順位を上げると,性能の整合性が取れなくなります。

7.9 特殊アカウントの設定

システム管理者は,自動ログイン・アカウント,プロジェクト・アカウント,代理アカウントなどの各種の特殊アカウントを設定しなければならない場合があります。以降の項では,次の作業方法を説明します。

作業 参照箇所
SYSMAN による自動ログイン・アカウントの設定 第 7.9.1 項
ACL 識別子を用いたプロジェクト・アカウントの設定 第 7.9.2 項
ネットワーク代理登録ファイルの作成 第 7.9.4 項
代理アカウントの追加 第 7.9.5 項
代理アカウントの削除 第 7.9.6 項
代理アカウントの表示 第 7.9.7 項
代理ログインの制御 第 7.9.8 項

第 7.9.3 項 はネットワーク代理アカウントの説明です。

7.9.1 SYSMAN による自動ログイン・アカウントの設定

SYSMAN ユーティリティには,自動ログイン機能 (ALF) という機能があります。 SYSMAN ALF コマンドを使用すれば,特定のユーザ名で自動的にログインできるようにターミナルを設定することができます。たとえば,ターミナルを INVENTORY というアカウント用に設定し,ユーザが Returnキーを押したとき自動的に機能別アカウントにログインさせることも可能です。

自動ログイン・アカウントを設定するためには,まず前節で説明した手順で最上位の省略時のディレクトリを作成して,アカウントを追加する必要があります。そして,次の形式で特定のターミナルまたはポートにそのアカウントを関連付けます。


ALF ADD   装置名   ユーザ名 [/TERMINAL] [/PORT] [/PROXY] [/LOG] 

装置名 ユーザ名に関連付けるターミナルまたはポート名。コマンド行に修飾子を指定していない場合は,ターミナル名を指定する。
ユーザ名 特定のターミナルまたはポートに関連付けるアカウント・ユーザ名。
/TERMINAL この修飾子を指定すると,SYSMAN は装置をターミナル名と見なす (省略時の設定)。
/PORT この修飾子を指定すると,SYSMAN は装置をポート名と見なす。ポート名にスラッシュ (/) などの特殊文字,または小文字を含む場合は,ポート名を引用符で囲む必要がある。引用符内に記述したとおりにALF データベース・ファイルに書き込まれるので注意する。たとえば,実際のポート名に特殊文字と大文字が含まれる場合には,大文字が引用符内に指定されていることを確認する。そうしなければ,実際のポート名とSYSALF.DAT ファイルに指定された名前が一致しなくなる。
/PROXY この修飾子を指定すると,SYSMAN は 装置が,最高63文字でNODE::USERNAME の形式になっているかチェックする。
/LOG この修飾子を指定すると,SYSMAN は 装置名および ユーザ名が ALF データベースに追加されたことを示すメッセージを表示する。

自動ログイン・アカウントを保護するには,AUTOLOGIN フラグをアカウントの UAF レコードに設定してください。このフラグは自動ログイン,バッチ,およびネットワーク代理だけでアカウントを使用できるように設定します。


SYSMAN を起動して,TTA0 というターミナルを INVENTORY25 アカウントに関連付けている例を次に示します。


$ RUN SYS$SYSTEM:SYSMAN
SYSMAN> ALF ADD TTA0 INVENTORY25

代理アカウントにALFレコードを作成した場合には,装置パラメータは最高63 文字です。たとえば,次のようになります。


SYSMAN> ALF ADD VMS:.ZKO.VMSORG.SYSMAN.CLIENT1::SYSTEM FOOBAR

上記のコマンドでは, VMS:.ZKO.VMSORG.SYSMAN.CLIENT1::SYSTEM が 装置パラメータの値です。

自動ログインアカウントと SYSMAN の ALF コマンドについての詳細は,『Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』と『OpenVMS Guide to System Security』を参照してください。


前へ 次へ 目次 索引