/etc/login.defs

From Azupedia
Jump to navigation Jump to search

NAME

shadow password suite configuration

DESCRIPTION

/etc/login.defs ファイルは、shadow password suiteに関するサイト固有の設定を定義する。このファイルは必須である。このファイルがなくてもシステムの動作が妨げられることはないが、おそらく好ましくない動作になると思われる。

このファイルは可読性の高いテキストファイルで、ファイルの各行には1つの設定パラメータが記述されている。行は空白で区切られた設定名と設定値で構成されている。空白行とコメント行は無視される。コメントは "#"ポンド記号で始まり、ポンド記号はその行の最初の非空白文字でなければならない。

パラメータ値には、文字列、ブーリアン、数値、長さの異なる数値の4種類を指定することができる。文字列は、印刷可能な任意の文字で構成される。booleanは、値yesnoのどちらかでなければならない。booleanパラメータが未定義の場合、またはこれら以外の値を持つ場合は、noが与えられる。数値(regularとlongの両方)は、10進数、8進数(値の前に0を付ける)、16進数(値の前に0xを付ける)のいずれかを指定することができる。正規の数値パラメーターと長い数値パラメーターの最大値は、機種依存である。

以下の設定項目がある:

option list
CHFN_RESTRICT (string)
このパラメータは、一般ユーザが chfn プログラムを使って /etc/passwd ファイルの gecos フィールドのどの値を変更してもよいかを指定する。f, r, w, h の文字の組み合わせで、それぞれ Full name, Room number, Work phone, Home phone を表す。後方互換性のために、yesrwhと同等、nofrwhと同等である。指定しない場合、スーパーユーザのみが変更を行うことができる。chfn SUIDをインストールしないことで、最も制限の多い設定を行うことがでる。
CONSOLE_GROUPS (string)
コンソールでログインするときにユーザーの補助グループセットに追加するグループのリスト(CONSOLE設定によって決定される)。デフォルトはnoneである。注意深く使用すること - コンソールでログインしていないときでも、ユーザーがこれらのグループへの永続的なアクセスを得ることが可能な場合がある。
CREATE_HOME (boolean)
新規ユーザーに対して、ホームディレクトリをデフォルトで作成するかどうかを指定する。
この設定はシステム・ユーザーには適用されず、コマンドラインで上書きすることができる。
DEFAULT_HOME (boolean)
ホームディレクトリにcdできない場合に、ログインを許可するかどうかを指定する。デフォルトはnoである。
yesに設定すると、ホームディレクトリにcdできない場合、ユーザはルート(/)ディレクトリにログインするようになる。
ENCRYPT_METHOD (string)
これは、パスワードを暗号化するためのシステムのデフォルトの暗号化アルゴリズムを定義する(コマンドラインでアルゴリズムが指定されていない場合)。
以下の値のいずれかを取ることができる。DES (既定)、MD5SHA256SHA512 のいずれかである。
注:このパラメータは、MD5_CRYPT_ENAB変数を上書きする。
注:これは、グループパスワードの生成にのみ影響する。ユーザーパスワードの生成はPAMによって行われ、PAMの設定に従う。この変数は、PAMの構成と一致するように設定することが推奨される。
ENV_HZ (string)
設定された場合、ユーザーログイン時に環境変数HZを定義するために使用される。値の前にはHZ=を付けなければならない。 Linuxで一般的な値はHZ=100である。
HZ環境変数は、ユーザー(スーパーユーザー)がsuloginでログインしたときにのみ設定される。
ENV_PATH (string)
設定された場合、一般ユーザーのログイン時にPATH環境変数を定義するために使用される。値は、コロンで区切られたパスのリスト(例:/bin:/usr/bin)で、PATH=を前に置くことができる。 デフォルト値は、PATH=/bin:/usr/binである。
ENV_SUPATH (string)
設定された場合、スーパーユーザのログイン時にPATH環境変数を定義するために使用される。この値は、コロンで区切られたパスのリスト(例えば、/sbin:/bin:/usr/bin:/usr/bin)で、PATH=を前に置くことができる。 デフォルト値はPATH=/sbin:/bin:/usr/sbin:/usr/binである。
ERASECHAR (number)
Terminal ERASE character (010 = backspace, 0177 = DEL).
8進数の場合は "0"、16進数の場合は "0x "を先頭に付けることができる。
FAIL_DELAY (number)
ログインに失敗した後、再試行が許可されるまでの遅延時間(秒)。
FAKE_SHELL (string)
設定された場合、login/etc/passwdで指定されたユーザーのシェルの代わりに、このシェルを実行する。
GID_MAX (number), GID_MIN (number)
useradd, groupadd, newusersで通常のグループを作成する際に使用するグループIDの範囲である。
GID_MIN (resp. GID_MAX) のデフォルト値は1000 (resp. 60000)である。
HOME_MODE (number)
新しいホームディレクトリのためのモード。指定されない場合、UMASK はモードを作成するために使用される。
useraddnewusers は、作成するホームディレクトリのモードを設定するためにこれを使用する。
HUSHLOGIN_FILE (string)
定義された場合、このファイルは、ログインシーケンス中のすべての通常のおしゃべりを抑制することができる。フルパス名が指定された場合、そのファイル中にユーザー名またはシェルがあれば、ハッシュドモードが有効になる。フルパスでない場合、そのファイルがユーザーのホームディレクトリに存在すれば、ハッシュドモードが有効になる。
KILLCHAR (number)
Terminal KILL character (025 = CTRL/U).
8進数の場合は "0"、16進数の場合は "0x "を先頭に付けることができる。
LASTLOG_UID_MAX (number)
lastlogエントリを更新すべき最も高いユーザID番号。高いユーザ ID は通常リモートユーザ ID 認証サービスによって追跡されるので、 巨大な疎な lastlog ファイルを作成する必要はない。
LASTLOG_UID_MAX オプションが設定にない場合、 lastlog エントリの書き込みにユーザ ID の制限がないことを意味する。
LOG_OK_LOGINS (boolean)
ログインの成功ログを有効にする。
LOG_UNKFAIL_ENAB (boolean)
ログイン失敗の記録時に、不明なユーザー名を表示するようにする。
注:不明なユーザー名を記録することは、ユーザーがログイン名の代わりにパスワードを入力した場合、セキュリティ上の問題になる可能性がある。
LOGIN_RETRIES (number)
パスワードが不正な場合にログインを再試行する回数の最大値。
デフォルトの pam_unix モジュールには 3 回の再試行が組み込まれているので、 これは PAM によって上書きされる可能性が高い。しかし、これは PAM_MAXTRIES を強制しない認証モジュールを使用している場合の安全な代替手段である。
LOGIN_TIMEOUT (number)
ログインにかかる最大時間(秒)
MAIL_DIR (string)
メールスプールディレクトリです。これは、対応するユーザーアカウントが変更または削除されたときに、メールボックスを操作するために必要である。指定しない場合は、コンパイル時のデフォルトが使用される。
MAIL_FILE (string)
ユーザのメールスプールファイルの場所をホームディレクトリと相対的に定義する。
MAIL_DIRMAIL_FILE 変数は useradd, usermod, userdel によって、ユーザのメール・スプールを作成、移動、削除するために使われる。
MAX_MEMBERS_PER_GROUP (number)
グループエントリあたりの最大メンバー数。最大値に達すると、/etc/groupに新しいグループエントリ(行)が開始される(同じ名前、同じパスワード、同じGIDで)。
デフォルト値は0である。つまり、グループ内のメンバー数に制限はない。
この機能(split group)は、グループ・ファイルの行の長さを制限することを許可する。これは、NISグループの行が1024文字より大きくないことを確認するのに便利である。このような制限を強制する必要がある場合は、25 を使用できる。
注意:分割グループは、すべてのツールでサポートされていない場合がある(Shadow toolsuite でも)。本当に必要でない限り、この変数を使用するべきではない。
MD5_CRYPT_ENAB (boolean)
パスワードが MD5 ベースのアルゴリズムで暗号化されていなければならないかどうかを示す。yesに設定すると、新しいパスワードはFreeBSDの最近のリリースで使用されているものと互換性のあるMD5ベースのアルゴリズムを使って暗号化される。長さに制限のないパスワードや、より長いソルト文字列にも対応している。新しいアルゴリズムを理解できない他のシステムに、暗号化されたパスワードをコピーする必要がある場合は、noに設定する。デフォルトはnoである。
この変数は、ENCRYPT_METHOD変数や、暗号化アルゴリズムを設定するためのコマンドラインオプションに取って代わられる。
この変数は非推奨です。ENCRYPT_METHODを使用すべきである。
注意:これはグループパスワードの生成にのみ影響する。ユーザーパスワードの生成はPAMによって行われ、PAMの設定に従う。この変数は PAM の設定と矛盾しないように設定することが推奨される。
PASS_MAX_DAYS (number)
パスワードが使用できる最大日数である。これより古いパスワードの場合、パスワードの変更が強制される。指定しない場合は、-1が想定される(制限を解除する)。
PASS_MIN_DAYS (number)
パスワードの変更に許容される最短日数である。これより早くパスワードを変更しようとすると、拒否される。指定しない場合、-1が仮定される(制限を無効にする)。
PASS_WARN_AGE (number)
パスワードの有効期限が切れるまでの警告日数。0は、有効期限切れ当日にのみ警告が出されることを意味し、負の値は警告が出されないことを意味する。指定しない場合、警告は行われない。
PASS_MAX_DAYSPASS_MIN_DAYSPASS_WARN_AGEは、アカウント作成時にのみ使用される。これらの設定を変更しても、既存のアカウントには影響しない。
SHA_CRYPT_MIN_ROUNDS (number), SHA_CRYPT_MAX_ROUNDS (number)
ENCRYPT_METHODSHA256 または SHA512 に設定されている場合、これは暗号化アルゴリズムがデフォルトで使用する SHA ラウンド数を定義する(コマンドラインでラウンド数が指定されていない場合)。
ラウンド数が多いと、パスワードのブルートフォース(総当り)が難しくなる。しかし、ユーザーを認証するために、より多くのCPUリソースが必要になることにも注意すること。
指定しない場合、libcはデフォルトのラウンド数(5000)を選択する。
値は1000-999,999,999の範囲内でなければならない。
SHA_CRYPT_MIN_ROUNDSまたはSHA_CRYPT_MAX_ROUNDSのいずれかの値のみが設定されている場合、この値が使用される。
SHA_CRYPT_MIN_ROUNDS > SHA_CRYPT_MAX_ROUNDSの場合、最も大きい値が使用される。
注:これは、グループパスワードの生成にのみ影響する。ユーザーパスワードの生成はPAMによって行われ、PAMの設定に従う。この変数は、PAMの構成と一致するように設定することが推奨される。
SULOG_FILE (string)
定義された場合、すべてのsuの活動はこのファイルに記録される。
SU_NAME (string)
定義されている場合、"su -" を実行したときに表示されるコマンド名である。例えば、"su" と定義されている場合、"ps" は "-su" というコマンドを表示する。定義されていない場合、"ps" は実際に実行されているシェルの名前、例えば "-sh" のようなものを表示する。
SUB_GID_MIN (number), SUB_GID_MAX (number), SUB_GID_COUNT (number)
/etc/subuid が存在する場合、useraddnewusers コマンドは (すでに下位のグループ ID を持っていない限り) 各新規ユーザに対して SUB_GID_MIN から SUB_GID_MAX の範囲から未使用のグループ ID を割り当てる。
SUB_GID_MIN, SUB_GID_MAX, SUB_GID_COUNTのデフォルト値はそれぞれ100000, 600100000, 65536である。
SUB_UID_MIN (number), SUB_UID_MAX (number), SUB_UID_COUNT (number)
/etc/subuid が存在する場合、useraddnewusers コマンドは (すでに下位のユーザ ID を持っていない限り) 各新規ユーザに対して SUB_UID_MIN から SUB_UID_MAX までの範囲から未使用のユーザ ID SUB_UID_COUNT を割り当てる。
SUB_UID_MIN, SUB_UID_MAX, SUB_UID_COUNTのデフォルト値はそれぞれ100000, 600100000, 65536である。
SYS_GID_MAX (number), SYS_GID_MIN (number)
useradd, groupadd, newusersによるシステムグループの作成に使用されるグループIDの範囲。
SYS_GID_MIN (resp. SYS_GID_MAX) のデフォルト値は 101 (resp. GID_MIN-1) である。
SYS_UID_MAX (number), SYS_UID_MIN (number)
useradd または newusers によるシステムユーザの作成に使用するユーザ ID の範囲。
SYS_UID_MIN (resp. SYS_UID_MAX) のデフォルト値は 101 (resp. UID_MIN-1) である。
SYSLOG_SG_ENAB (boolean)
sgの動作の「syslog」ロギングを有効にする。
SYSLOG_SU_ENAB (boolean)
su の動作の "syslog" ロギングを有効にする - sulog ファイルのロギングに加えてである。
TTYGROUP (string), TTYPERM (string)
端末のパーミッション:ログインttyの所有者はTTYGROUPグループになり、パーミッションはTTYPERMに設定される。
デフォルトでは、端末の所有権はユーザーのプライマリ・グループに設定され、パーミッションは0600に設定されている。
TTYGROUP には、グループ名または数値のグループ識別子を指定できる。
端末を所有する特別なグループに「setgid」される書き込みプログラムがある場合、TTYGROUPをグループ番号に、TTYPERMを0620に定義すること。それ以外の場合は、TTYGROUPをコメントアウトしたままにして、TTYPERMに622または600を割り当てること。
TTYTYPE_FILE (string)
定義されている場合、tty ラインを TERM 環境パラメータにマップするファイル。ファイルの各行は、"vt100 tty01" のような形式である。
UID_MAX (number), UID_MIN (number)
useraddnewusers で一般ユーザーを作成する際に使用するユーザーIDの範囲である。
UID_MIN (resp. UID_MAX) のデフォルト値は1000 (resp. 60000) である。
UMASK (number)
ファイルモード作成マスクはこの値で初期化される。指定されない場合、マスクは 022 に初期化される。
useraddnewusers は、HOME_MODE が設定されていない場合、作成するホームディレクトリのモードを設定するためにこのマスクを使用する。
また、pam_umaskによって、デフォルトのumask値として使用される。
USERDEL_CMD (string)
定義されている場合、このコマンドはユーザーを削除するときに実行される。これは、削除されるユーザー(最初の引数として渡される)が所有するすべてのat/cron/printジョブなどを削除する必要がある。
スクリプトのリターンコードは考慮されない。
以下は、ユーザーのcronatprintジョブを削除するスクリプトの例である:
#! /bin/sh

# Check for the required argument.
if [ $# != 1 ]; then
    echo "Usage: $0 username"
    exit 1
fi

# Remove cron jobs.
crontab -r -u $1

# Remove at jobs.
# Note that it will remove any jobs owned by the same UID,
# even if it was shared by a different username.
AT_SPOOL_DIR=/var/spool/cron/atjobs
find $AT_SPOOL_DIR -name "[^.]*" -type f -user $1 -delete \;

# Remove print jobs.
lprm $1

# All done.
exit 0
USERGROUPS_ENAB (boolean)
yesに設定すると、userdelはそのユーザーのグループにメンバーがいなくなった場合に削除し、useraddはデフォルトでそのユーザーの名前のグループを作成する。

CROSS REFERENCES

以下のクロスリファレンスは、shadow password suite内のどのプログラムがどのパラメータを使用するかを示している。

chfn
CHFN_RESTRICT
chgpasswd
ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS
chpasswd
SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS
gpasswd
ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS
groupadd
GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN
groupdel
MAX_MEMBERS_PER_GROUP
groupmems
MAX_MEMBERS_PER_GROUP
groupmod
MAX_MEMBERS_PER_GROUP
grpck
MAX_MEMBERS_PER_GROUP
grpconv
MAX_MEMBERS_PER_GROUP
lastlog
LASTLOG_UID_MAX
login
CONSOLE_GROUPS DEFAULT_HOME ERASECHAR FAIL_DELAY FAKE_SHELL HUSHLOGIN_FILE KILLCHAR LOGIN_RETRIES LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB TTYGROUP TTYPERM TTYTYPE_FILE USERGROUPS_ENAB
newgrp / sg
SYSLOG_SG_ENAB
newusers
ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK
pwck
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
pwconv
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
su
CONSOLE_GROUPS DEFAULT_HOME ENV_PATH ENV_SUPATH SULOG_FILE SU_NAME SYSLOG_SU_ENAB
sulogin
ENV_HZ
useradd
CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK
userdel
MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB
usermod
LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP

BUGS

かつてshadow password suiteによって提供されていた機能の多くは、現在では PAM によって処理される。 したがって、/etc/login.defs はもはや passwdでは使われないし、loginsu ではあまり使われない。代わりに、対応する PAM 設定ファイルを参照すること。

SEE ALSO

login, passwd, su, passwd, 認証とアクセス制御