LOGIN.CONF(5)

名称
login.conf - ログインクラス ケーパビリティ データベース

書式
/etc/login.conf, ~/.login_conf

解説
login.conf には、ログインクラスについてのさまざまな属性やケーパビリティが 含まれています。 ログインクラス (ユーザアカウントデータベースである /etc/master.passwd のそれぞれの行について自由に設定できる注釈) は、セッションの アカウンティングやリソース制限、ユーザ環境設定などを決定します。 ログインクラスはシステム内のさまざまなプログラムから利用され、 ユーザのログイン環境を設定するほか、 ポリシー、アカウンティング及び管理上の制限を設定します。 ログインクラスはまた、 システムや利用可能な種々の認証機構に対するユーザ認証手段を提供します。

システムのユーザクラスケーパビリティデータベースである /etc/login.conf の中の "default" という特別なレコードは、 /etc/master.passwd 内に有効なログインクラスを持たない root 以外のすべてのユーザに よって自動的に使われます。有効なログインクラスを持たない uid が 0 の ユーザは、"root" レコードが存在する場合はそのレコードが、 存在しない場合は "default" レコードがログインクラスとして使われます。

FreeBSD においては、個々のユーザは .login_conf というファイルをホームディレクトリに作成することができます。 このファイルは (/etc/login.conf と) 同じフォーマットで、 レコード id が "me" である 1 エントリのみで構成されます。 もし .login.conf が存在するならば、このファイルは login(1) によって使用され、システムのログインケーパビリティデータベースによって 指定されたユーザ環境設定を上書き設定します。 その際、ログインケーパビリティのサブセット、 典型的には承認やリソース制限そしてアカウンティングを含まないもの のみが上書きされます。

クラスケーパビリティデータベースのレコードは、コロンで区切られた いくつかのフィールドから構成されています。 各レコードの最初のフィールドは、レコードを特定するための 1 つまたは複数の名前で、それらは '|' 文字で区切られます。 その最初の名前が、最も一般化された短縮名称です。 最後の名前は、ログインケーパビリティエントリをより分かりやすく説明した 長い名前であるべきで、他の名前はその同義語です。 すべての名前は小文字かつ空白を含まないようにすべきですが、 最後の名前は可読性を考慮して、大文字やブランクを含んでいてもよいでしょう。

ケーパビリティデータベースのフォーマットについての詳細な説明は getcap(3) を参照してください。

ケーパビリティ
データベース内のそれぞれの行に含まれるフィールドは、 getcap(3) の慣習に従い、ブール型、文字列型 ‘=’ 数値型 ‘#’ があります。 しかしながら数値データのところは、数値型が拒否され文字列型が 受け入れられることがあったり、両方の書式が受け入れられることもあります。 値は次のカテゴリに分類されます。

bool
    名前が存在する場合、ブール値は真になります。 そうでない場合、偽になります。

file
    データファイルへのパス名

program
    実行可能ファイルへのパス名

list
    コンマや空白で区切られた値のリスト (または値の組)

path
    普通の csh の慣習に従った、空白やコンマで区切られたパス名のリスト (先頭のユーザ名を伴う/伴わないチルダはホームディレクトリに展開される等)

number
    10 進数 (デフォルト)、16 進数 (0x で始まる)、または 8 進数 (0 で始まる) の 数値型の値。数値型の場合、設定できる値は 1 つだけです。 数値型は文字列型のフォーマットでも指定できる場合があります (ケーパビリティタグ '#' の代わりに '=' で値が区切られているなど)。 どの方法が使われた場合でも、データベース中のすべての行は修正したい行の値を 正確に上書きするために、同じ方法を用いなければなりません。

size
    サイズを表す文字。単位のデフォルトの解釈はバイトで、サフィックスに よって別の単位を指定できます。
    b   512 バイトブロックの明示的な指定
    k   キロバイトの指定 (1024 バイト)
    m   1 メガバイトの乗数の指定 (1048576 バイト)
    g   ギガバイト単位の指定。そして
    t   テラバイトの記述。
    サイズの値は数値であり、サフィックスの大文字小文字は重要ではありません。 連続した値は足し込まれます。

time
    時間の期間。デフォルトの単位は秒。 プレフィックスによって別の単位を指定できます。
    y   1 年を 365 日で数えた年数の指定
    w   週の数の指定
    d   日数
    h   時間数
    m   分数
    s   秒数
    連続した値は足し込まれます。 たとえば 2 時間 40 分は 9600s、160m または 2h40m と 表現することができます。

特別な tc=value 表記を使用することにより、通常の約束事であるケーパビリティエントリの 補間が可能です。

リソース制限
名称 | 型 | 注 | 解説
coredumpsize | size |  | コアダンプサイズの最大値制限
cputime | time |  | CPU 使用制限
datasize | size |  | データサイズの最大値制限
filesize | size |  | ファイルサイズの最大値制限
maxproc | number |  | プロセス数の最大値制限
memorylocked | size |  | コアメモリロック可能量の最大値制限
memoryuse | size |  | コアメモリ使用量の最大値制限
openfiles | number |  | プロセスごとにオープンできるファイル数の最大値制限
sbsize | size |  | 最大のソケットバッファサイズ
stacksize | size |  | スタックサイズの最大値制限

これらのリソース制限エントリは、実際には最大値と現在の 制限値の両方を指定します ( getrlimit(2) を参照してください)。 普通は現在の制限値 (ソフトリミット) が使われますが、 ユーザは現在の制限値を最大制限値 (ハードリミット) まで増やすことが 許されています。 最大制限値と現在の制限値はケーパビリティ名に各々 -max 及び -cur を 追加することによって指定できます。

環境
名称 | 型 | 注 | 解説
charset | string |  | $MM_CHARSET 環境変数の明示的な設定値
hushlogin | bool | false | ~/.hushlogin ファイルがある場合と同じ
ignorenologin | bool | false | nologin によってログインを禁止されません
lang | string |  | $LANG 環境変数を指定した値に設定します
manpath | path |  | マニュアルページのデフォルト検索パス
nologin | file |  | このファイルが存在する場合、ファイルの内容が画面に表示され、そのログインセッションは終了されます
path | path | /bin /usr/bin | デフォルトコマンド検索パス
priority | number |  | 優先度 (nice) レベルの初期値
requirehome | bool | false | ログインのために有効なホームディレクトリが必要
setenv | list |  | コンマで区切られた環境変数とその設定値のリスト
shell | prog |  | パスワードファイルで指定されているシェルより優先して実行されるセッションシェル。SHELL 環境変数の値は、パスワードファイルで指定されているものになります。
term | string |  | 他の手段によって決定できない場合のデフォルトの端末タイプ
timezone | string |  | $TZ 環境変数のデフォルト値
umask | number | 022 | umask の初期値。続く数字が 8 進数と解釈されるように、常に 0 から始めます
welcome | file | /etc/motd | ウェルカムメッセージが入っているファイル

認証
名称 | 型 | 注 | 解説
copyright | file |  | 追加のコピーライト情報を含んだファイル
host.allow | list |  | クラス内のユーザがアクセス可能なリモートホストワイルドカードのリスト
host.deny | list |  | クラス内のユーザがアクセス不可なリモートホストワイルドカードのリスト
login_prompt | string |  |
login(1) が与えるログインプロンプト
minpasswordlen | number | 6 | ローカルパスワード文字列長の最小値
mixpasswordcase | bool | true |
すべて小文字のパスワードが入力された場合、 passwd(1) がユーザに警告します
passwd_format | string | md5 | 新規パスワードが使用する
暗号フォーマット。 有効な値は "md5", "des", "blf" です。 NIS クライアントが、 FreeBSD ではない NIS サーバを使用する場合、 おそらく "des" を使用すべきでしょう。
passwd_prompt | string |  |
login(1) が表示するパスワードプロンプト
times.allow | list |  | ログインが許されている時間帯のリスト
times.deny | list |  | ログインが許されない時間帯のリスト
ttys.allow | list |  | クラス内のユーザがアクセスに使用できる端末と端末グループのリスト
ttys.deny | list |  | クラス内のユーザがアクセスに使用不可な端末と端末グループのリスト

これらのフィールドは、ログイン認証システムの中で passwd(1) や、その他のプログラムから使用される予定です。

環境変数を設定するケーパビリティは、その中の文字 ‘~’ と ‘$’ の両方がスキャンされ、これらはそれぞれ ユーザのホームディレクトリ及びユーザ名に置換されます。 環境変数中にこれらの文字をそのまま含める場合には、 その前にバックスラッシュ '\' をつけてエスケープします。

host.allow と host.deny エントリはコンマで区切られたリストで、システムへのリモートアクセスの チェックに使われます。 これらはホスト名か IP アドレスまたはその両方を含むリストからなり、 それらに対してリモートログインのチェックが行われます。 このリストの各項目は、ワイルドカード一致用にシェルプログラムが使用しているのと 同じ書式のワイルドカードを含むことができます (実装の詳細は fnmatch(3) を参照してください)。 ホストのチェックは、リモートシステムのインターネットアドレス と (もし有効なら) ホスト名の両方をつきあわせて行われます。 両方のリストが空かもしくは指定されていない場合、あらゆるリモートホスト からのログインは許可されます。 host.allow が 1 つかそれ以上のホストを含む場合、リスト中の 各項目のどれかにマッチしたリモートシステムのみがログインを許されます。 host.deny が 1 つかそれ以上のホストを含む場合、そのリストのどれかに マッチしたホストからのログインが禁止されます。

times.allow と times.deny エントリはコンマで区切られた期間のリストであり、この期間はクラス内の ユーザがログインを許されます。 これらは 1 つ以上の日のコード指定と、これに続けて 24 時間表記の開始時刻と 終了時刻をハイフンまたはダッシュで区切ったものとして表現されます。 たとえば MoThSa0200-1300 は、月、木、土の 午前 2 時から午後 1 時と解釈されます。 これらの時間指定リストの両方が空だった場合、クラス内のユーザはいつでもアクセス 可能になります。 times.allow が指定されている場合、ログインは指定された期間のみ許可されます。 もし times.deny が指定されている場合、 times.allow の中で期間が指定されているかどうかに関わらず、指定された期間は ログインできなくなります。

login(1) が強制することは、これらのエントリにより許可された期間内に実際の ログインが行なわれることのみである点に注意して下さい。 セッションの生存期間に関して更なる規制をかけるには、別のデーモンを用意し、 許可されている期間から許可されていない期間への 遷移を監視する必要があります。

ttys.allow と ttys.deny エントリは、クラス内のユーザがシステムにアクセスするために使う コンマで区切られた (/dev/ プレフィックスを除く) 端末デバイスと、 端末グループ (ttygroup) のリストです (ttygroup の詳細は getttyent(3) と ttys(5) を参照して下さい)。 どちらのエントリも存在しない場合、ユーザが使用するログインデバイスの選択には 制限はありません。 ttys.allow のみ指定されている場合、ユーザの使えるデバイスは指定されたグループ またはデバイスリストのみに制限されます。 ttys.deny のみ指定されている場合、ユーザは指定されたデバイスやデバイス グループを使用できません。 両方が与えられていてかつどちらも空でない場合、ユーザは ttys.allow で指定されていて、ttys.deny では指定されていないデバイス群のみ 使用できます。

アカウント制限
名称 | 型 | 注 | 解説
accounted | bool | false | このクラス内の全ユーザの
セッション時間アカウウンティングを有効化
autodelete | time |  | アカウント失効後自動で削除されるまでの時間
bootfull | bool | false | セッション終了時の「ttygroup が一杯の場合にのみブート」戦略を
有効にする
daytime | time |  | 1 日あたりのログイン最大時間
expireperiod | time |  | 期限切れまでの割り当て時間
graceexpire | time |  | 失効したアカウントの猶予日数
gracetime | time |  | 追加された、猶予ログイン許可時間
host.accounted | list |  | ログインセッションがアカウントされる
リモートホストワイルドカードのリスト
host.exempt | list |  | ログインセッションのアカウンティング
を免除されたリモートホストワイルドカードのリスト
idletime | time |  | ログアウトまでの最大アイドル時間
monthtime | time |  | 月毎の最大ログイン時間
passwordtime | time |  | 次回パスワード無効日を指定するために
passwd(1) が使用
refreshtime | time |  | アカウントのリフレッシュ許可時間
refreshperiod | str |  | リフレッシュが行なわれる頻度
sessiontime | time |  | セッション毎の最大ログイン時間
sessionlimit | number |  | すべてのグループに対する tty 上の
同時最大ログイン数
ttys.accounted | list |  | ログインアカウントが有効な tty と ttygroup のリスト
ttys.exempt | list |  | ログインアカウントが無効な tty と ttygroup のリスト
warnexpire | time |  | 失効しそうなアカウントに対する事前の注意を
行なう時間
warnpassword | time |  | 失効しそうなパスワードに対する事前の
注意を行なう時間
warntime | time |  | 時間切れになりそうな場合に対する事前の注意を
行なう時間
weektime | time |  | 1 週間毎の最大ログイン時間

これらのフィールドは、ユーザのログインアクセスを規制、コントロール、記録する タイムアカウンティングシステムによって使われます。

ttys.accounted と ttys.exempt フィールドは、先に述べた ttys.allow と ttys.deny と同じような方法で状態を操作します。 host.accounted と host.exempt のリストも同様です。

関連項目
cap_mkdb(1), login(1), getcap(3), getttyent(3), login_cap(3), login_class(3), passwd(5), ttys(5)