EN JA
LOGIN.CONF(5)
LOGIN.CONF(5) FreeBSD File Formats Manual LOGIN.CONF(5)

名称

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

書式

/etc/login.conf, ~/.login_conf

解説

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

システムのユーザクラスケーパビリティデータベースである /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 つまたは複数の名前で、それらは、'|' 文字で区切られます。その最初の名前が、最も一般化された短縮名称です。最後の名前は、ログインケーパビリティエントリをより分かりやすく説明した長い名前であるべきで、他の名前は、その同義語です。すべての名前は、小文字かつ空白を含まないようにすべきですが、最後の名前は、可読性を考慮して、大文字やブランクを含んでいてもよいでしょう。

コロン (‘ :’) は、ケーパビリティエントリを分離するために使用されるので、‘ \c’エスケープシーケンスは、ケーパビリティの値または名前にリテラル (定数) のコロンを埋め込むために使用されなければならないことに注意してください。

FreeBSD と共に出荷されたデフォルトの /etc/login.conf は、難しい設定などは一切なしで使えます。これへの変更、またはユーザの ~/.login_conf ファイルが作られるときは、いつも、 cap_mkdb(1) がデータベースにファイルをコンパイルするために使用されるまで、変更は有効となりません。このデータベースファイルは、 .db 拡張子があり、 cgetent(3) を通してアクセスされます。ケーパビリティデータベースの形式についての詳細な説明は、 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 最大のソケットバッファサイズ.
vmemoryuse size プロセスあたりの最大総 VM 使用量.
stacksize size スタックサイズの最大値制限.
pseudoterminals number 疑似端末の最大数.
swapuse size 最大のスワップ領域サイズの制限.

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

環境

名称 解説
charset string $MM_CHARSET 環境変数の明示的な設定値.
cpumask string ユーザにバインドする cpu のリスト. 構文は, cpuset(1)-l 引数または単語‘ default’に対するものと同じです. ‘ default’に設定されるなら, アクション (行動) を取りません.
hushlogin bool false ~/.hushlogin ファイルがある場合と同じ.
ignorenologin bool false nologin によってログインを禁止されません.
ftp-chroot bool false FTP 接続を, chroot(2) を使用してユーザの HOME ディレクトリへ制限します. 詳細は, ftpd(8) を参照してください.
label string デフォルトの MAC ポリシの定義。 maclabel(7) 参照.
lang string $LANG 環境変数を指定した値に設定します.
manpath path マニュアルページのデフォルト検索パス.
nocheckmail bool false ログイン時にメールのステータスを表示します.
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) が与えるログインプロンプト.
login-backoff number 3 この回数のログイン試行がなされた後, 後続する試行に対してバックオフ遅延が追加されます. バックオフ遅延は, この login-backoff に 5 秒を掛けた試みの数です.
login-retries number 10 ログイン失敗までに可能な, ログイン試行回数.
passwd_format string sha512 新規または変更するパスワードが使用する暗号形式. 有効な値は, "des", "md5", "blf", "sha256"と "sha512"です. 詳細については, crypt(3) を参照. NIS クライアントが, FreeBSD ではない NIS サーバを使用する場合, おそらく "des"を使用すべきでしょう.
passwd_prompt string login(1) が表示するパスワードプロンプト.
times.allow list ログインが許されている時間帯のリスト.
times.deny list ログインが許されない時間帯のリスト.
ttys.allow list クラス内のユーザがアクセスに使用できる端末と端末グループのリスト.
ttys.deny list クラス内のユーザがアクセスに使用不可な端末と端末グループのリスト.
warnexpire time 失効しそうなアカウントに対する事前の注意を行なう時間.
warnpassword time 失効しそうなパスワードに対する事前の注意を行なう時間.

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

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

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

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

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

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

minpasswordlen および minpasswordcase の機能は、パスワードの品質制限を強制するためのものです。 login.conf でサポートされていましたが、現在は、 pam_passwdqc(8) PAM モジュールにとってかわられました。

予約済ケーパビリティ

下記ケーパビリティは、記述された目的のために予約済であり、サードパーティソフトウェアによってサポートされているかもしれません。ベースシステムでは、実装されていません。
名称 解説
accounted bool false このクラス内の全ユーザのセッション時間アカウンティングを有効化.
auth list passwd 許可された認証スタイル. 最初の項目は, デフォルトスタイルです.
auth- type list 認証 type のための許可された認証スタイル.
autodelete time アカウント失効後自動で削除されるまでの時間.
bootfull bool false セッション終了時の「ttygroup が一杯の場合にのみブート」戦略を有効にする.
daytime time 1 日あたりのログイン最大時間.
expireperiod time 期限切れまでの割り当て時間.
graceexpire time 失効したアカウントの猶予日数.
gracetime time 追加された、猶予ログイン許可時間.
host.accounted list ログインセッションがアカウントされるリモートホストワイルドカードのリスト.
host.exempt list ログインセッションのアカウンティングを免除されたリモートホストワイルドカードのリスト.
idletime time ログアウトまでの最大アイドル時間.
minpasswordlen number 6 ローカルパスワード文字列長の最小値.
mixpasswordcase bool true すべて小文字のパスワードが入力された場合, passwd(1) がユーザに警告します.
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 のリスト.
warntime time 時間切れになりそうな場合に対する事前の注意を行なう時間.
weektime time 1 週間毎の最大ログイン時間.

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

July 8, 2011 FreeBSD