projmod - システム上にあるプロジェクトの情報の変更
projmod [-n] [-A|-f filename | -]
projmod [-n] [-A|-f filename | -] [-p projid [-o]] [-c comment] [-a|-s|-r] [-U user [,user]... ] [-G group [,group]... ] [ [-K name [=value [,value]...]...]] [-l new_projectname] project
projmod ユーティリティーは、システム上のプロジェクトの定義を変更します。projmod は、指定されたプロジェクトの定義を変更し、システムファイルやファイルシステムにプロジェクト関連の適切な変更を加えます。
サポートしているオプションは、次のとおりです。
プロジェクトがアクティブな場合は、システムのプロジェクトデータベースに定義されているプロジェクトのリソース制御をプロジェクトに適用します。
–U、–G、または –K オプションで指定されたユーザー、グループ、属性、または属性値を、既存のメンバーまたは属性リストを置き換えるのではなく、プロジェクトに追加するように指定します。
comment をテキスト文字列で指定します。通常、comment にはプロジェクトの簡単な説明が含まれます。この情報は、プロジェクトの /etc/project エントリに保存されます。
–A オプションでのみ有効です。プロジェクトに project.pool 属性がない場合、その実行中のすべてのプロセスが、プロセスのゾーンのデフォルトのプールにバインドされます。これは、poolbind(1M) または psrset(1M) によって手動のバインディングが行われており、管理者が project(4) に project.pool=pool_default を設定した場合のように、プロジェクト全体をデフォルトのプールにバインドする場合に役立ちます。
プロジェクトから project.pool 属性を削除する場合は、このオプションを使用して、プロジェクトをデフォルトのプールに再バインドします。このオプションを指定しないと、プロジェクトで project.pool または project.mcb 属性を指定していない場合、プロジェクトに対するプロセスは、すでにバインドされているプールや pset に引き続きバインドされたままになります。
変更または検証するプロジェクトファイルを指定するか、検証する標準入力からの入力を指定します。「オペランド」で説明されているとおり、projmod コマンド行でプロジェクトを指定しない場合、projmod は –f の引数を検証します。このオプションを使用しない場合は、システムプロジェクトファイル /etc/project が変更されます。
プロジェクトのメンバーグループの置換リストを指定します。–a または –r オプションと組み合わせて使用される場合、このオプションは、プロジェクトで追加または削除するグループのリストを指定します。
プロジェクトのプロジェクト属性の置換リストを指定します。–a、–r、または –s オプションと組み合わせて使用される場合、このオプションは、プロジェクトで追加、削除、または置換する属性値のリストを指定します。属性はセミコロン (;) で区切る必要があります。複数の –K オプションを指定すると、たとえば次のように、複数のキーの値を設定、追加、削除、または置換できます。
-K key1=value1 -K "key2=(value2a),(value2b)"
リソース制御属性では、キーの値の指定に括弧が使用されます。括弧は多くのユーザーシェルで特殊文字として解釈されるため、括弧を含んでいる –K の引数は、上記の例および後述の「使用例」のように二重引用符で囲むのが最善です。プロジェクトに指定できるリソース制御については、resource-controls(5) を参照してください。
プロジェクトの新しいプロジェクト名を指定します。new_projectname 引数は、英字、数字、ピリオド (.)、下線 (_)、およびハイフン (-) のセットに含まれる文字から成る文字列です。最初の文字は英字にするようにしてください。これらの要件が満たされていない場合は、エラーメッセージが書き込まれます。また、プロジェクト名はプロジェクトファイル内で一意である必要があります。
構文検査。既存のシステムプロジェクトファイルおよび変更についてのみ、形式を検査します。プロジェクト属性で指定されているユーザー名、グループ名、リソースなど、既存のプロジェクトファイルの内容は検査されません。
このオプションを使用すると、–p オプションで指定されたプロジェクト ID はプロジェクトファイル内で重複が許されます。
プロジェクトの新しいプロジェクト ID を指定します。これは、param.h で定義されている MAXUID より小さく、かつ負でない 10 進整数である必要があります。–o オプションが指定されていない場合、この値はプロジェクトファイル内で一意である必要があります。
–U、–G、または –K オプションで指定されたユーザー、グループ、属性、または属性値を、既存のメンバーまたは属性リストを置き換えるのではなく、プロジェクトから削除するように指定します。
–K オプションで指定された属性リストの値を置き換えるように指定します。属性が存在しない場合、それらは a オプションが使用された場合と同様に追加されます。このオプションは –U または –G オプションには影響を与えません。
プロジェクトのメンバーユーザーの置換リストを指定します。–a または –r オプションと組み合わせて使用される場合、このオプションは、プロジェクトで追加または削除するユーザーのリストを指定します。
次のオペランドがサポートされています。
変更または表示する既存のプロジェクトの名前。
オペランドが指定されていない場合、プロジェクトを変更することなくプロジェクトファイルが検証されます。
次の project(4) エントリについて考えてみます。
salesaudit:111:Auditing Project::sales,finance: \ process.max-file-size=(priv,52428800,deny); \ task.max-lwps=(priv,100,deny)
上記は、/etc/project には 1 行で表示されます。この例と以降の例では、project エントリの属性フィールドに注目します。つまり、最後のフィールド、最後のセミコロンに続くフィールドです。
プロジェクト salesaudit の属性フィールドには、次のリソース制御が記述されています。
task.max-lwps=(priv,1000,signal=KILL)
次の projmod コマンドは、上記のエントリにアクション節を追加します。
# projmod -a -K "task.max-lwps=(priv,100,deny)" salesaudit
その結果、salesaudit のエントリの属性フィールドは次のようになります。
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)使用例 2 –K オプションを使用して属性値を置換する
プロジェクト salesaudit の project(4) エントリの属性フィールドに、次のリソース制御が記述されているとします。
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
次の projmod コマンドは、コマンドに指定されたアクション節で上記のエントリのアクション節を置換します。
# projmod -s -K "task.max-lwps=(priv,500,signal=SIGSTOP)" salesaudit
その結果、salesaudit のエントリの属性フィールドは次のようになります。
task.max-lwps=(priv,500,signal=SIGSTOP)使用例 3 –K オプションを使用して属性値を削除する
プロジェクト salesaudit の project(4) エントリの属性フィールドに、次のリソース制御が記述されているとします。
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
次の projmod コマンドは、上記のエントリから最初のアクション節を削除します。
# projmod -r -K "task.max-lwps=(priv,100,deny)" salesaudit
その結果、salesaudit のエントリの属性フィールドは次のようになります。
task.max-lwps=(priv,1000,signal=KILL)使用例 4 複数の属性値を指定する
プロジェクト salesaudit で次のリソース制御を実現する場合を考えてみます。
task.max-lwps=(priv,100,deny) process.max-file-size=(priv,50MB,deny)
次の projmod コマンドは、salesaudit にこれらのリソース制御を追加します。
# projmod -a -K "task.max-lwps=(priv,100,deny)" \ -K "process.max-file-size=(priv,50MB,deny)" salesaudit
その結果、salesaudit のエントリの属性フィールドは次のようになります。
task.max-lwps=(priv,100,deny);process.max-file-size=(priv,52428800,deny)
この例では、修飾子と倍率の使用よるリソース制御 process.max-file-size への効果に注目してください。projmod では次のように指定されています。
"process.max-file-size=(priv,50MB,deny)"
/etc/project では次のようになっています。
process.max-file-size=(priv,52428800,deny)
つまり、50MB が 52428800 に展開されています。リソース制御に使用できる修飾子 (MB など) と倍率は、resource-controls(5) に指定されています。
使用例 5 プロジェクトにプールをバインドする次のコマンドは、プロジェクト sales の project.pool 属性を設定します。
# projmod -a -K project.pool=salespool sales使用例 6 標準入力からの入力を評価する
次のコマンドは、プロジェクト名のオペランドなしで –f オプションを使用して、NIS プロジェクトマップの内容を評価します。
# ypcat project | projmod -f -
エラーが発生した場合、projmod はエラーメッセージを出力し、次のいずれかの値で終了します。
次の終了ステータスが返されます。
正常終了。
コマンド構文が無効でした。projmod の使用法に関するメッセージが表示されます。
オプションに無効な引数が指定されました。
–p オプションで指定された projid はすでに使用されています。
プロジェクトファイルにエラーがあります。project(4) を参照してください。
変更するプロジェクト、グループ、ユーザー、またはリソースが存在しません。
プロジェクトはすでに使用されています。
/etc/project ファイルを更新できません。
グループ定義を含むシステムファイル
システムプロジェクトファイル
システムパスワードファイル
ユーザーの暗号化パスワードおよび関連情報を含むシステムファイル
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
この呼び出しは開発中です。人間が読める形式の出力は不安定 (Unstable) です。
groupadd(1M)、groupdel(1M)、groupmod(1M)、projadd(1M)、projdel(1M)、useradd(1M)、userdel(1M)、usermod(1M)、passwd(4)、project(4)、attributes(5)、resource-controls(5)
projmod ユーティリティーは、ローカルの /etc/project ファイル内のプロジェクト定義だけを変更します。NIS や LDAP などのネットワークネームサービスを使用してローカルファイルに追加エントリが補完されている場合、ネットワークネームサービスによって指定された情報は projmod では変更できません。ただし、projmod は外部ネームサービスと照合して、プロジェクト名およびプロジェクト ID が一意であることを確認します。