名前 | 形式 | 機能説明 | 属性 | 戻り値 | 関連項目 | 注意事項
#include <tsol/user.h>userent_t *getuserentbyname(char *user, int src);
tsoluser NIS+ データベースから Trusted Solaris ユーザー属性について説明するエントリを取得します。
getuserentbyname() は、指定されたユーザー名 user を持つユーザーについての情報を検索します。 getuserentbyuid() は、指定されたユーザー ID uid を持つユーザーについての情報を検索します。
関数 setuserent()、getuserent()、enduserent() は、データベースからユーザーエントリを一覧表示するのに使用します。setuserent() は、Trusted Solaris ユーザーエントリのセットの先頭への列挙法を設定します (または取り消します)。この関数は、getuserent() を初めて呼び出す前に呼び出します。getuserbyname() または getuserentbyuid() を呼び出すと、リスト位置が不確定な状態のままになります。stayopen フラグがゼロでない場合は、次に enduserent() を呼び出すまで、オープンファイル記述子などの割り当て済み資源が保持されます。
getuserent() を連続して呼び出すと、連続したエントリか、リストの終了を示す NULL が返されます。
呼び出し元がこれ以上ユーザーエントリ検索操作を実行したくないときには、enduserent() を呼び出します。すると、使用していた資源の 割り当てが解除されます。enduserent() の呼び出し後も、 プロセスがユーザーエントリ検索関数を呼び出すことは可能ですが、効率が悪くなります。
関数 getuserentbyname()、getuserentbyuid()、getuserent() は、返された結果を格納するためのメモリーを割り当てる再入可能インタフェースで、シングルスレッドアプリケーションとマルチスレッドアプリケーションのどちらで使用しても安全です。関数 free_userent() は、この 2 つの関数によって割り当てられたメモリーを解放するのに使用します。ユーザー名へのポインタであるパラメータ user は、NULL で終わる文字列とします。また、パラメータ uidは uid_t とします。
パラメータ src は、<tsol/tsol.h> に定義されている TSOL_DB_SRC_FILES、TSOL_DB_SRC_NISPLUS、TSOL_DB_SRC_SWITCH のどれに設定してもかまいません。
マルチスレッドアプリケーションでの一覧表示の場合、リスト内の位置はすべてのスレッドが共有するプロセス全体の属性です。マルチスレッドアプリケーションでは setuserent() を使用できますが、これを使用すると、すべてのスレッドのリスト位置が取り消されます。getuserent() の呼び出しを複数のスレッドでインタリーブすると、スレッドは tsoluser データベースと無関係なサブセットを一覧表示します。
次の属性の説明については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWtsu |
MT レベル | MT- 安全 |
typedef struct userent_s { char *name; /* user associated with this entry */ char *lock; /* is account locked? */ char *badlogins; /* how many failed login attempts so far */ char *generation; /* method of password generation */ char *profiles; /* user profiles used */ char *roles; /* roles assumable */ char *idletime; /* minutes a workstation may remain idle */ char *idlecmd; /* what to do at when idletime reached */ char *labelview; /* can user see ADMIN_HI and ADMIN_LOW labels */ char *labeltrans; /* process security attributes for label translation */ char *labelmin; /* allowed low login labels */ char *labelmax; /* allowed high login labels */ char *usertype; /* normal, admin-role, or non-admin-role */ char *res1; /* reserved for future use*/ char *res2; /* reserved for future use*/ char *res3; /* reserved for future use*/ userent_t };
要求されたエントリが見つかった場合、getuserentbyname() は userent_t へのポインタを返します。エントリが見つからなかった場合、getuserentbyname() は NULL を返します。
エントリを一覧表示できた場合、getuserent() は userent_t へのポインタを返します。エントリを一覧表示できなかった場合、getuserent() はリストの終了を示す NULL を返します。
成功時、setuserent() と enduserent() は 0 を返します。
関数 getuserentbyname()、getuserentbyuid()、getuserent() は、失敗時に NULL を返します。
これらの関数を実行すると、実行時に共有オブジェクトの動的な読み込みとリンクが適用されるため、このマニュアルページで説明するインタフェースを使用するプログラムを静的にリンクすることはできません。
マルチスレッドアプリケーションをコンパイルする際、REENTRANT フラグの使い方については、Intro(3) の「マルチスレッドプログラミングに関する注意事項」を参照してください。
これらのインタフェースは未確認です。Trusted Solaris 環境のマイナーリリースでの変更は予定されていませんが、場合によっては変更もあり得ます。