Go to main content
Oracle® Solaris 11.3 でのリソースの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

プロジェクト識別子

プロジェクト識別子は、関連する作業を特定するために使用される管理識別子です。プロジェクト識別子は、ユーザー識別子やグループ識別子と同様な、作業負荷に付けられているタグと考えることができます。ユーザーまたはグループは 1 つ以上のプロジェクトに所属できます。プロジェクトは、ユーザー (またはユーザーグループ) が参加することを許可されている作業負荷を表すために使用します。このメンバーシップは、たとえば、使用状況や初期リソース割り当てに基づく課金の根拠となります。ユーザーにはデフォルトのプロジェクトを割り当てる必要がありますが、ユーザーが起動するプロセスは、ユーザーが属しているプロジェクトであれば、どのプロジェクトにでも関連付けることができます。

ユーザーのデフォルトプロジェクトの判定

システムにログインするには、そのユーザーにデフォルトのプロジェクトが割り当てられている必要があります。ユーザーは、そのプロジェクトで指定されたユーザーリストやグループリストに含まれていない場合でも、自動的にそのデフォルトプロジェクトのメンバーになります。

システム上の各プロセスはプロジェクトのメンバーシップを所有しているため、ログインやその他の初期処理にデフォルトのプロジェクトを割り当てるアルゴリズムが必要です。アルゴリズムについては、getprojent(3C) のマニュアルページを参照してください。システムは、手順に従ってデフォルトプロジェクトを判定します。デフォルトプロジェクトが見つからない場合、ユーザーのログインまたはプロセスの開始要求は拒否されます。

システムは、次の手順でユーザーのデフォルトプロジェクトを判定します。

  1. ユーザーが、/etc/user_attr 拡張ユーザー属性データベースで定義されている project 属性のエントリを持っている場合は、その project 属性の値がデフォルトプロジェクトになります。user_attr(4) のマニュアルページを参照してください。

  2. user.user-id という名前のプロジェクトが project データベースにある場合は、そのプロジェクトがデフォルトプロジェクトになります。詳細は、project(4) のマニュアルページを参照してください。

  3. group.group-name というプロジェクトが project データベースにあり、group-name がユーザーのデフォルトのグループ名 (passwd ファイルで指定されている) である場合は、そのプロジェクトがデフォルトプロジェクトになります。passwd ファイルについては、passwd(4) のマニュアルページを参照してください。

  4. project データベースに default という特別なプロジェクトがある場合は、そのプロジェクトがデフォルトプロジェクトになります。

このロジックは getdefaultproj() ライブラリ関数が提供します。詳細は、getprojent(3PROJECT) のマニュアルページを参照してください。

useradd および usermod コマンドによるユーザー属性の設定

次のコマンドに –K オプションと key=value ペアを付けて使用すると、ローカルファイル内のユーザー属性を設定できます。

useradd

ユーザーのデフォルトプロジェクトを設定する

usermod

ユーザー情報を変更する

ローカルファイルには、次のようなものがあります。

  • /etc/group

  • /etc/passwd

  • /etc/project

  • /etc/shadow

  • /etc/user_attr

NIS などのネットワークネームサービスを使ってローカルファイルに追加エントリを補足する場合、これらのコマンドでは、ネットワークネームサービスで指定された情報を変更することはできません。ただし、これらのコマンドを使用すると、次の内容を外部の「ネームサービスデータベース」と照合して検証できます。

  • ユーザー名 (または役割) の一意性

  • ユーザー ID の一意性

  • 指定されたグループ名の存在

詳細は、useradd(1M)usermod(1M)、および user_attr(4) のマニュアルページを参照してください。

project データベース

プロジェクトのデータは、ローカルファイル、ドメインネームシステム (DNS)、ネットワーク情報サービス (NIS) のプロジェクトマップ、または LDAP (Lightweight Directory Access Protocol) ディレクトリサービスに保存できます。/etc/project ファイルまたはネームサービスは、ログイン時、および PAM (プラグイン可能認証モジュール) によるアカウント管理に対する要求があったときに使用され、ユーザーをデフォルトのプロジェクトに結合します。


注 - プロジェクトデータベース内のエントリに対する更新は、/etc/project ファイルまたはネットワークネームサービスのデータベース表現のどちらに対するものであっても、現在アクティブなプロジェクトには適用されません。更新内容は、login コマンドまたは newtask コマンドが使用されたときに、プロジェクトに新たに参加するタスクに適用されます。詳細は、login(1) および newtask(1) のマニュアルページを参照してください。

PAM サブシステム

アカウント情報の変更や設定を行う操作には、システムへのログイン、rcp または rsh コマンドの呼び出し、ftp の使用、su の使用などがあります。アカウント情報の変更や設定が必要な場合は、設定可能なモジュール群を使用して、認証、アカウント管理、資格管理、セッション管理などを行います。

PAM の概要については、Oracle Solaris 11.3 での Kerberos およびその他の認証サービスの管理 の 第 1 章, プラグイン可能認証モジュールの使用を参照してください。

ネームサービス構成

リソース管理は、ネームサービス project データベースをサポートします。project データベースが格納されている場所は、/etc/nsswitch.conf ファイルで定義されます。デフォルトでは files が最初に指定されていますが、ソースは任意の順序で指定できます。

project: files [nis] [ldap]

プロジェクト情報に対して複数のソースが指定されている場合、nsswitch.conf ファイルによりルーチンは最初に指定されているソースで情報を検索し、次にその後に続くソースを検索します。

/etc/nsswitch.conf ファイルの詳細については、Oracle Solaris 11.3 ディレクトリサービスとネームサービスでの作業: DNS と NIS の 第 2 章, ネームサービススイッチについておよび nsswitch.conf(4) を参照してください。

ローカルの /etc/project ファイルの形式

nsswitch.conf ファイルで project データベースのソースとして files を選択した場合、ログインプロセスはプロジェクト情報を /etc/project ファイルで検索します。詳細は、projects(1) および project(4) のマニュアルページを参照してください。

project ファイルには、システムによって認識されるプロジェクトごとにエントリが 1 行ずつ、次の形式で記述されています。

projname:projid:comment:user-list:group-list:attributes

フィールドの定義は次のとおりです。

projname

プロジェクト名。英数字、下線 (_)、ハイフン (-)、およびピリオド (.) から成る文字列を指定します。ピリオドは、オペレーティングシステムに対して特殊な意味を持つプロジェクト用に予約されており、ユーザーのデフォルトプロジェクトの名前にだけ使用できます。projname にコロン (:) や改行文字を使用することはできません。

projid

システムでプロジェクトに割り当てられる一意の数値 ID (PROJID)。projid フィールドの最大値は UID_MAX (2147483647) です。

comment

プロジェクトの説明。

user-list

プロジェクトへの参加を許可されたユーザーをコンマで区切ったリスト。

このフィールドではワイルドカードを使用できます。アスタリスク (*) を指定した場合、すべてのユーザーにプロジェクトへの参加を許可します。感嘆符に続けてアスタリスクを指定した場合 (!*)、すべてのユーザーのプロジェクトへの参加を拒否します。感嘆符 (!) に続けてユーザー名を指定した場合、指定されたユーザーのプロジェクトへの参加を拒否します。

group-list

プロジェクトへの参加を許可されたユーザーのグループをコンマで区切ったリスト。

このフィールドではワイルドカードを使用できます。アスタリスク (*) を指定した場合、すべてのグループにプロジェクトへの参加を許可します。感嘆符に続けてアスタリスクを指定した場合 (!*)、すべてのグループのプロジェクトへの参加を拒否します。感嘆符 (!) に続けてグループ名を指定した場合、指定されたグループのプロジェクトへの参加を拒否します。

attributes

リソース制御など、名前と値の対をセミコロンで区切ったリスト (リソース制御についてを参照)。name は、オブジェクトに関連する属性を指定する任意の文字列です。また value はその属性のオプション値です。

name[=value]

名前と値の組で、名前に使用できるのは、文字、数字、下線、ピリオドに制限されます。リソース制御 (rctl) のカテゴリとサブカテゴリの区切り文字にはピリオドを使用します。属性名の最初の文字は英字にする必要があります。名前については大文字と小文字は区別されます。

値を、コンマと括弧を使用して構造化することにより、優先順位を設定できます。

セミコロンは、名前と値の組を区切るために使用されます。セミコロンは値の定義には使用できません。コロンは、プロジェクトフィールドを区切るために使用されます。コロンは値の定義には使用できません。


注 - このファイルを読み取るルーチンは、無効なエントリを検出すると停止します。このため、無効なエントリの後に指定されているプロジェクトの割り当てはどれも実行されません。

次に、デフォルトの /etc/project ファイルの例を示します。

system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::

次に、デフォルトの /etc/project ファイルの最後にプロジェクトエントリを追加した例を示します。

system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
user.ml:2424:Lyle Personal:::
booksite:4113:Book Auction Project:ml,mp,jtd,kjh::

/etc/project ファイルにリソース制御と属性を追加することもできます。

NIS のプロジェクト構成

NIS を使用している場合は、NIS プロジェクトマップ内でプロジェクトを検索するように、/etc/nsswitch.conf ファイルで指定できます。

project: nis files 

NIS マップの project.bynameproject.bynumber はどちらも、次に示すように /etc/project ファイルと同じ形式です。

projname:projid:comment:user-list:group-list:attributes

詳細は、Oracle Solaris 11.3 ディレクトリサービスとネームサービスでの作業: DNS と NIS の 第 5 章, ネットワーク情報サービスについてを参照してください。

LDAP のプロジェクト構成

LDAP を使用している場合は、LDAP project データベースでプロジェクトを検索するように、/etc/nsswitch.conf ファイルで指定できます。

project: ldap files

LDAP の詳細は、Oracle Solaris 11.3 ディレクトリサービスとネームサービスでの作業: LDAP の 第 1 章, LDAP ネームサービスの概要を参照してください。LDAP データベースでのプロジェクトエントリのスキーマの詳細は、Oracle Solaris 11.3 ディレクトリサービスとネームサービスでの作業: LDAP の Oracle Solaris スキーマを参照してください。