日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
LOGIN_CAP(3) FreeBSD ライブラリ関数マニュアル LOGIN_CAP(3) 名称 login_close, login_getcapbool, login_getcaplist, login_getcapnum, login_getcapstr, login_getcapsize, login_getcaptime, login_getclass, login_getclassbyname, login_getpwclass, login_getstyle, login_getuserclass, login_setcryptfmt -- ログインクラスケーパビリティの データベースにアクセスするための関数 ライブラリ システムユーティリティライブラリ (libutil, -lutil) 書式 #include <sys/types.h> #include <login_cap.h> void login_close(login_cap_t *lc); login_cap_t * login_getclassbyname(const char *nam, const struct passwd *pwd); login_cap_t * login_getclass(const char *nam); login_cap_t * login_getpwclass(const struct passwd *pwd); login_cap_t * login_getuserclass(const struct passwd *pwd); const char * login_getcapstr(login_cap_t *lc, const char *cap, const char *def, const char *error); const char ** login_getcaplist(login_cap_t *lc, const char *cap, const char *chars); const char * login_getpath(login_cap_t *lc, const char *cap, const char *error); rlim_t login_getcaptime(login_cap_t *lc, const char *cap, rlim_t def, rlim_t error); rlim_t login_getcapnum(login_cap_t *lc, const char *cap, rlim_t def, rlim_t error); rlim_t login_getcapsize(login_cap_t *lc, const char *cap, rlim_t def, rlim_t error); int login_getcapbool(login_cap_t *lc, const char *cap, int def); const char * login_getstyle(login_cap_t *lc, const char *style, const char *auth); const char * login_setcryptfmt(login_cap_t *lc, const char *def, const char *error); 解説 これらの関数は、login.conf(5) で提供されたログインクラスデータベースへの プログラミングインタフェースを示しています。このデータベースは、 /etc/master.passwd のエントリ内のログインクラスのフィールドによって決定さ れるように、ケーパビリティ、属性およびデフォルト環境とユーザのためのアカ ウントの設定と特定のユーザとして実行しているプログラムを含んでいます。 login.conf(5) のエントリは、コロン `:' で区切られたフィールド、`|' によっ てそれぞれ区切られた (全体のデータベースのためにユニークでなければならな い) レコードのための 1 つ以上の識別子となる各レコードの最初のフィールドと 最後の `name' としての記述をオプションで含んでいるフィールドから成りま す。レコードの残りのフィールドは、キーワード/データのペアから成ます。長い 行は、読みやすさのためにオプションでインデント (段付け) される 2 番目とそ の後の行で、空のエントリ内のバックスラッシュで継続されます。これは、キー ワードが重要な 2 文字に制限されず、読みやすさのために改良された通常より長 いことを除いて、termcap(5) で使用される形式に似ています。termcap エントリ と同様に、`tc=<recordid>' を含んでいるフィールドを使用して (別のものを含 む 1 つのレコード) 複数のレコードを結合することができます。<recordid> に よって参照される全体のレコードは、それが起こる時点で、tc= フィールドを置 き換える結果となります。ケーパビリティのデータベースの形式と使用に関する 詳細については、getcap(3) を参照してください。 login_cap インタフェースは、拡張されたすべての tc= 参照でログインクラスの レコードを検索して取り出すための便利な方法を提供しています。プログラム は、通常、その要件にしたがって login_getclass(), login_getpwclass(), login_getuserclass() または login_getclassbyname() の 1 つを呼び出しま す。これらの関数のそれぞれは、API の残りを使用して特定の値のためのデータ ベースを問い合わせするために使用される、ログインケーパビリティ構造体 login_cap_t を返します。いったん login_cap_t は、さらに使用されないと、 login_close() 関数は、使用されたすべてのリソースを解放するために呼び出さ れるべきです。 login_cap_t の構造体は、次のように <login_cap.h> で定義されます: typedef struct { char *lc_class; char *lc_cap; char *lc_style; } login_cap_t; lc_class メンバは、検索して取り出されたログインクラスの名前へのポインタを 含んでいます。これは、直接的に login_getclassbyname() を通して、または login_getpwclass() を使用するクラス名によって login_getclass() を使用して ユーザのログインレコードを通して間接的であるかのいずれかで、必ずしも要求 されたものと同じではないかもしれません。参照されたユーザに /etc/master.passwd で指定されたログインクラスがないなら、クラス名は、NULL または空の文字列です。指定されたクラスがデータベースに存在しないなら、こ れらの関数のそれぞれは、lc_class フィールドに返されたその名前とともに `default' の ID でレコードを検索します。さらに、参照されるユーザに 0 の UID (通常、`root' ですが、ユーザ名は、考慮されません) があるなら、 login_getpwclass() は、`default' の ID でレコードを検索する前に、`root' の ID でレコードを検索します。 lc_cap フィールドは、拡張されたログインケーパビリティレコードを含むライブ ラリによって内部で使用されます。特異な要件があるプログラムは、レコードに 直接アクセスするために下レベルの getcap() スタイルの関数でこれを使用した いかもしれません。 lc_style フィールドは、ログイン自体を処理しているプログラムの要件にした がって、login_getstyle() 関数によって認可スタイルに設定されます。 login_getclassbyname() 関数は、login_cap_t オブジェクトを取得するための基 本的な方法です。それは、次の 2 つの引数を受け付けます: 最初のもの name は、検索されるレコードのレコード識別子です。2 番目の pwd は、passwd 構造 体へのオプションのポインタです。まず最初に、その引数は、システムとユーザ モードの操作を選択するために、関数によって使用されます。システムモードの とき、システムログインクラスのデータベースだけが使用されます。ユーザモー ドであるとき、ユーザのホームディレクトリの補足的なログインクラスのデータ ベースは、以下で述べられるように制限された方法でシステムのデータベースの 設定を上書きすることが許可されます。セキュリティの影響を最小にするため に、name が LOGIN_MECLASS (`me') であり、pwd が NULL でない時かつその時に 限り、login_getclassbyname() によってユーザモードに入ります。そうでなけれ ば、システムモードが、選択されます。 システムモードで、システムのデータベース /etc/login.conf のあらゆるレコー ドをアクセスすることができ、デフォルトのレコードへのフォールバックは、次 のように提供されます。name が、NULL、空の文字列、またはログインクラスの データベースに存在しないクラスであるなら、代わりに、LOGIN_DEFCLASS レコー ド (`default') が返されます。 ユーザモードで、LOGIN_MECLASS レコード (`me') だけがアクセスされ、 `default' レコードへのフォールバックは、提供されません。pwd->pw_dir に よって指定されたディレクトリは、.login_conf と呼ばれるログインデータベー スファイルを検索し、それに含まれている `me' ケーパビリティレコードのみ が、他のレコードが無視される間に、同じ名前でシステムレコードを上書きしま す。このスキームを使用して、アプリケーションは、ユーザが、ログインの設定 の選択されたサブセットを上書きすることを明示的に許可することができます。 そうするために、アプリケーションは、2 つの login_cap_t オブジェクト、ユー ザモードのものと他のシステムモードのものを取得するべきで、次に、ユーザに よって上書きすることを許可されるログインパラメータのためのシステムオブ ジェクトの前のユーザオブジェクトに問い合わせます。例えば、ユーザの .login_conf は、login(1) によってサポートされているなら、シェルがログイン で呼び出される前に、それらの好まれるログイン環境を設定するユーザのために 便利な方法を提供することができます。 /etc/login.conf と .login_conf ファイルへのアクセスは、それぞれ、uid 0 と pwd->pw_uid のための _secure_path(3) で文書化されたセキュリティチェックに 従って、ただ実行されることに注意してください。 指定されたレコードが NULL であるか、空であるか、または存在しなくて、シス テムにフォールバックに利用可能な `default' レコードがなく、メモリ割り付け エラーがあるか、または cgetent(3) が何らかの理由のために、ログインケーパ ビリティのデータベースにアクセスすることができないなら、この関数は、NULL を返します。 関数 login_getclass(), login_getpwclass() と login_getuserclass() は、 login_getclassbyname() を呼び出すことによってユーザの passwd (パスワード) エントリまたはクラス名のための適用可能なログインクラスレコードを検索して 取り出します。失敗すると、NULL が、返されます。これらの関数の違いは、 login_getuserclass() が、ユーザのホームディレクトリに存在するユーザの上書 きする .login_conf 含んでいること、と login_getpwclass() と login_getclass() は、/etc/login.conf のシステムのログインクラスデータベー スにだけに検索を制限することです。以前に説明したように、何もパスワード データベースで指定されなかったなら、それが `root' としてスーパユーザのた めのデフォルトクラスを許可するという点において login_getpwclass() は、 login_getclass() と異なります。そうでなければ、passwd (パスワード) ポイン タが NULL であるか、または、ユーザレコードにログインクラスがないなら、シ ステムの `default' (デフォルト) のエントリが検索して取り出されます。基本 的に、login_getclass(name) は、login_getclassbyname(name, NULL) と同様 で、login_getuserclass(pwd) は、login_getclassbyname(LOGIN_MECLASS, pwd) と同様です。 いったんもう、プログラムが、もはや login_cap_t オブジェクトを使用すること を望まないと、login_close() は、ログインクラスによって使用されたすべての リソースを解放するために呼び出されます。login_close() 関数は、有害な副作 用なしで NULL ポインタを渡されます。 残りの関数は、個別のケーパビリティレコードを検索して取り出すために使用さ れます。各関数は、最初のパラメータとして login_cap_t オブジェクト、2 番目 のパラメータとしてケーパビリティタグと、ケーパビリティが見つけられないな らば返されるデフォルトとエラー値である残りのパラメータをを取ります。それ ぞれ処理されるケーパビリティのタイプに依存して渡されて、返される追加のパ ラメータのタイプは、簡単な文字列、リスト、時間値、ファイルまたはメモリサ イズ値、(ディレクトリのコロンで区切られたリストから成る) パスまたはブール 値のフラグとなります。login.conf(5) のためのマニュアルページは、特有のタ グとそれらのタイプを扱います。 このグループのすべての関数で、利用者は、返されたあらゆるポインタで free(3) を呼び出すべきではないことに注意してください。ケーパビリティタグ の検索して取り出しまたは処理の間に割り付けられたメモリは、このグループの 関数への続く呼び出しによって自動的に再利用されるか、または login_close() の呼び出しで割り付け解放されます。 login_getcapstr() この関数は、単純な文字列ケーパビリティを返します。文 字列が見つけられないなら、def の値が、デフォルト値と して返され、エラーが起こるなら、error パラメータの値 が返されます。 login_getcaplist() この関数は、NULL で終了する配列で値のリストとして、指 定されたケーパビリティタグに対応する値を返します。ロ グインクラスのデータベース内で、いくつかのタグは、1 つ以上のコンマまたは空白で区切られた値から成る、タイ プ list です。通常、この関数は、アプリケーションから 直接呼び出されませんが、login_getstyle() によって間接 的に使用されます。 login_getpath() この関数は、コロン `:' によって区切られたディレクトリ のリストを返します。この関数が呼び出されるケーパビリ ティタグは、空白によって区切られたディレクトリのリス トから成ります。 login_getcaptime() この関数は、秒 (デフォルト)、分、時、日、週または (365 日) 年またはあらゆるこれらの組み合わせで表現され る値がある特別のケーパビリティタグに関連する time value (時間値) を返します。接尾辞は、使用される次の単 位を決定します: 秒のための `S'、分のための `M'、時の ための `H'、日のための `D'、週のための `W' と 365 日 の年のための `Y'。単位の接尾辞の大文字、小文字は、無 視されます。 時間値は、通常、リソース、アカウントとセッションの制 限を設定するために使用されます。(FreeBSD に当てはま る) オペレーティングシステムとコンパイラによってサ ポートされているなら、返される値は、タイプ rlim_t の quad (long long) です。値 `inf' または `infinity' は、無限の値を表現するために使用され、その場合、 RLIM_INFINITY が返されます。 login_getcapnum() この関数は、`tag=<value>' または標準の cgetnum() 形式 の `tag#<value>' のいずれかとして表現されるタグのため の数値を返します。最初の形式は、2 番目に優先して使用 されるべきで、2 番目の形式は、数値のタイプが数値値の ためのデリミタとして `#' を使用する getcap(3) データ ベース形式との互換性と一貫性のために提供されていま す。最初の形式の場合に、与えられた値は、RLIM_INFINITY の返り値の結果となる `inf' または `infinity' となるか もしれません。与えられたケーパビリティタグを見つるこ とかできななら、def パラメータが返され、エラーが起こ るなら、error パラメータが返されます。 login_getcapsize() login_getcapsize() は、バイト (デフォルト)、512 バイ トブロック、キロバイト、メガバイト、ギガバイトと long long タイプをサポートするシステムでテラバイトをとして 表現されるサイズ (通常、ファイルまたはメモリ) を表し ている値を返します。使用される接尾辞は、単位を決定 し、複数の値と単位は、組み合わせて使用されます (例え ば、1m500k = 1.5 メガバイト)。接尾辞がない値は、512 バイトブロックとして `B'、キロバイトとして `K'、メガ バイトとして `M'、ギガバイトとして `G'そしてテラバイ トとして `T' のバイトとして解釈されます。大文字小文字 は、無視されます。ログインケーパビリティのデータベー スのエラーがあるなら、無効の接尾辞が使用されたか、ま たは、数値が解釈できないなら、エラー値が、返されま す。 login_getcapbool() この関数は、特定のフラグに結びつけられたブール値を返 します。与えられたケーパビリティタグが存在しないか、 または `tag@' (ブール値フラグの詳細については、 getcap(3) を参照) の存在によって取り消されるなら、0 を返し、タグが見つけられるなら、1 を返します。 login_getstyle() この関数は、特定の場合に利用可能なログインのスタイル を決定するために、ログイン認証システムによって使用さ れます。関数は、3 つのパラメータ、lc エントリ自体、2 つのオプションのパラメータ、認証タイプ auth と style を受け付け、最適なこれらの規則である認証スタイルを決 定するために、これらを適用します。 • auth が NULL でも空の文字列でもないなら、ケーパビ リティレコードのタイプ `auth-<auth>' のタグを検索 します。存在しないなら、デフォルトのタグ auth= を 検索します。 • 有効な認証リストが前のステップで見つけられなかっ たなら、認証リストとして `passwd' をデフォルトと します。 • style が NULL ではないか、または空であるなら、前 のステップで見つけられた認証方法のリストでそれを 検索します。style が NULL であるか、または空の文 字列であるなら、`passwd' 認証をデフォルトとしま す。 • style が、認証可法の選択されたリストに見つけられ るなら、それを返し、そうでなければ、NULL を返しま す。 このスキームによって、管理者は、アクセスが起こる手段 に依存して、システムによって受け付けられる認証方法の タイプを決定することができます。例えば、管理者は、 ネットワークによってシステムへのアクセスのために使用 される認証方法として、"snooping" (のぞき見) ネット ワークパケットによってパスワードの発見のリスクをかな り減らして、直接的なダイヤルアップまたはコンソールロ グインによる標準の方法として skey または Kerberos を 必要とします。 login_setcryptfmt() login_setcryptfmt() 関数は、passwd_format 設定エント リを使用して crypt(3) 形式を設定するために使用されま す。エントリが見つけられないなら、def が、フォール バックとして使用されると思われます。指定子で crypt_set_format(3) の呼び出しが失敗するなら、error は、これを示すために返されます。 関連項目 login(1), crypt(3), getcap(3), login_class(3), login.conf(5), termcap(5) FreeBSD 11.2 June 14, 2007 FreeBSD 11.2