login - システムへのサインオン
login [-p] [-d device] [-R repository] [-s service] [-t terminal] [-u identity] [-U ruser] [-h hostname [terminal] | -r hostname] [name [environ]...]
login コマンドは、各端末セッションの開始時に使用するコマンドです。このコマンドを使用して、システムにユーザーの識別情報を提示します。login は、あるユーザーが exit コマンドを実行してログインシェルを終了させたあと、次のユーザーが最初に接続を確立するときに、システムによって呼び出されます。
スーパーユーザー以外は、コマンドとして login を呼び出すことはできません。
login がコマンドとして呼び出された場合には、初期コマンドインタプリタが置き換えられる必要があります。この方法で login を呼び出すには、
exec login
初期シェルから次のように入力します。C シェルと Korn シェルには、それぞれ独自の login の組み込みコマンドがあります。login の組み込みコマンドとその使用法については、 ksh(1)、ksh88 (1)、および csh(1) を参照してください。
引数としてユーザー名を指定しないと、login は、ユーザー名とユーザーパスワード (必要な場合) の入力を求めます。可能な場合、パスワードの入力中はエコーが抑止されます。このため、セッションの書き込み記録にパスワードが残ってしまうことはありません。
ログイン手続きの際に入力を誤ると、次のメッセージが出力され、
Login incorrect
新しいログインプロンプトが表示されます。ログイン手続きに 5 回失敗すると、これがすべて /var/adm/loginlog ファイルに記録され (ファイルが存在しない場合もある)、TTY 回線が切断されます。
パスワードの有効期限を設定する機能が有効になっている場合に、パスワードが有効期限を過ぎてしまうと、ユーザーはパスワードの変更を求められます (詳細は、passwd (1) を参照)。このとき、パスワードの記録場所を特定するために、/etc/nsswitch.conf ファイルが参照されます (nsswitch.conf(5) を参照)。サポートされるパスワード更新の構成は、次の場合に限られます。
passwd: files
passwd: files nis
いずれの形式にも合っていない場合、 passwd(1) は失敗するため、システムにログインできません。一定時間内に正常にログインできなかった場合は、メッセージで通知されることなく接続が解除されることがあります。
正常にログインすると、アカウンティングファイルが更新されます。デバイスの所有者、グループ、アクセス権が /etc/logindevperm ファイルの内容に従って設定され、最終ログイン時間が出力されます (logindevperm(5) を参照)。
ユーザー ID、グループ ID、補助グループリスト、作業用ディレクトリは初期化され、コマンドインタプリタが起動されます。
基本環境は、次のように初期設定されます。
HOME=your-login-directory LOGNAME=your-login-name PATH=/usr/bin: SHELL=last-field-of-passwd-entry MAIL=/var/mail/
Bourne シェルや Korn シェルでログインする場合は、それぞれ /etc/profile と $HOME/.profile が実行されます (ファイルが存在しない場合もある)。
ksh Korn シェルの場合は、対話型シェルが、/etc/ksh.kshrc と、ENV 環境変数で指定されたファイルを順に実行します。$ENV が設定されていない場合、これはデフォルトで $HOME/.kshrc になります。ksh および /usr/xpg4/bin/sh Korn シェルの場合、対話型シェルが、$ENV (デフォルトなし) によって指定されたファイルを実行します。
一方、C シェルでログインする場合は、/etc/.login、$HOME/.cshrc、$HOME/.login が実行されます。デフォルトの /etc/profile および /etc/.login ファイルは割り当て制限を確認し (quota(8) を参照)、/etc/motd を出力し、メールを確認します。$HOME/.hushlogin ファイルが存在する場合、メッセージは何も表示されません。コマンドインタプリタ名は、- (ダッシュ) のあとにインタプリタのパス名の最後の構成要素を付けたものになります (例: -sh)。
パスワードファイルの login-shell フィールド (passwd(5) を参照) が空であれば、デフォルト時のコマンドインタプリタ /usr/bin/sh が使用されます。このフィールドが アスタリスク (*) の場合は、指定のディレクトリがルートディレクトリになります。この時点で、独自のルート構造を持つ新しいレベルで login が再実行されます。
実行時または login がログイン名を要求したときに login に引数を追加すると、環境を拡張したり変更したりできます。この引数は、xxx または xxx=yyy という形式で指定します。= (等号) を使用しない形式の引数は、次のように環境設定内に配置します。
Ln=xxx
このとき、n は 0 から始まる通し番号になります。この数値は、新しい変数名が必要になるたびに大きくなります。= (等号) を使用した形式の変数は、そのまま環境設定に取り込まれます。すでに設定が環境に取り込まれている場合に新しい変数を指定すると、前の値が新しい設定値に置き換えられます。
ただし、例外が 2 つあります。変数 PATH と変数 SHELL は変更できません。これは、制限付きのシェル環境にログインしているユーザーが、子プロセスとして制限のない新しいシェルを生成するのを防ぐためです。login は、単純な単一文字引用規則を認識します。文字の前に \ (バックスラッシュ) を付けることにより、スペース文字やタブなどの文字も使用できます。
login に –p フラグを付けることによって、現在の環境を引き渡すこともできます。このフラグにより、現在定義されているすべての環境変数が、可能であれば新しい環境に引き渡されます。ただし、このオプションを指定しても、前述の環境変数の制限を回避することはできません。変数が両方の方法で引き渡された場合、login の引数に指定した環境変数が優先されます。
ルートによるリモートログインを可能にするには、/etc/default/login ファイルを編集し CONSOLE=/dev/console エントリの前に # (ポンド記号) を挿入してください。「ファイル」を参照してください。
ファイル (passwd(5) および shadow(5)) ネームサービスまたは ldap ネームサービスのアカウントの場合、enableShadowUpdate true を構成すると、ログイン試行が構成済みの値以上連続して失敗した場合にアカウントを自動的にロックするように構成できます。ldapclient(8)、user_attr(5)、policy.conf(5)、および pam_unix_auth(7) を参照してください。
login コマンドは pam(3PAM) を使って、認証、アカウント管理、セッション管理、パスワード管理を行います。PAM 構成ポリシーは、/etc/pam.conf または /etc/pam.d/login に記述されており、login で使用するモジュールを指定します。次に、pam.conf ファイルの抜粋を示します。UNIX 認証、アカウント管理、セッション管理モジュールを使用する login コマンドのエントリが指定されています。
login auth required pam_authtok_get.so.1 login auth required pam_unix_auth.so.1 login account requisite pam_roles.so.1 login account required pam_unix_account.so.1 login session required pam_unix_session.so.1
/etc/pam.d/ 内の同等の PAM 構成では、/etc/pam.d/login 内に次のエントリが含まれます:
auth required pam_authtok_get.so.1 auth required pam_unix_auth.so.1 account requisite pam_roles.so.1 account required pam_unix_account.so.1 session required pam_unix_session.so.1
通常、/etc/pam.conf 内のパスワード管理スタックは次のようになります:
other password requisite pam_authtok_get.so.1 other password requisite pam_authtok_check.so.1 other password required pam_authtok_store.so.1
/etc/pam.conf および /etc/pam.d/service に PAM サービスのエントリがない場合は、/etc/pam.conf 内の「その他の」サービスのエントリが使用されます。/etc/pam.conf に「その他の」サービスのエントリが一切存在しない場合、/etc/pam.d/other 内のエントリが使用されます。認証モジュールが複数含まれている場合は、複数のパスワードが必要になることがあります。
rlogind や telnetd で login が呼び出されるときに、PAM が使用するサービス名はそれぞれ rlogin、telnet になります。
サポートしているオプションは、次のとおりです。
login は、デバイスオプション device を受け付けます。device は、login が動作する TTY ポートのパス名とみなされます。デバイスオプションを使用すると、login が ttyname (3C) を呼び出す必要がなくなるため、login のパフォーマンスの向上が期待できます。–d オプションは、ユーザー ID と実効ユーザー ID が root であるユーザーのみが使用できます。その他から –d が使用されると、login は何もせずに終了します。
リモートホストと端末タイプに関する情報を渡すために、in.telnetd(8) によって使用されます。
–h オプションの 2 番目の引数としての端末タイプをハイフン (-) で始めてはいけません。
ログインシェルに環境変数を渡すために使用します。
リモートホストに関する情報を渡すために、in.rlogind(8) によって使用されます。
使用する PAM リポジトリを指定します。PAM リポジトリを使用するには、–u オプションを使用して (下記を参照)、PAM に「identity」情報を伝える必要があります。「identity」情報を伝えない場合、その PAM リポジトリは使用されません。
使用する PAM サービス名を指定します。通常、この引数は必ずしも必要ではなく、代替の PAM サービス名を指定するときだけに使用します。たとえば、Kerberos 認証 telnet プロセスの場合は「ktelnet」です。
認証の対象となるユーザーに関連する「identity」文字列を指定します。通常、そのユーザーの UNIX ログイン名とは異なります。Kerberos 認証ログインセッションの場合、そのユーザーに関連する Kerberos 主体名になります。
rlogin 接続のリモート側でログインを試みているユーザーの名前を示します。in.rlogind(8) が Kerberos モードで動作している場合、そのデーモンは login を呼び出す前に端末とリモートユーザー名の情報を処理するため、このコマンド行パラメータを使用して「ruser」データが示されます。通常、Kerberos 認証されていない rlogin では、リモートユーザーの情報は login デーモンがクライアントから読み取ります。
次の終了ステータスが返されます。
正常終了。
エラー。
各 csh の初期設定コマンド。
ログインメッセージの抑制。
$ENV が未設定の場合の、対話型の ksh ユーザーのコマンドで、/etc/ksh.kshrc のあとに実行される。
csh ユーザーのログインコマンド。
sh および ksh ユーザーのログインコマンド。
信頼できるホスト名とユーザー名の組み合わせのプライベートリスト。
システム全体の csh のログインコマンド。
項目またはプロジェクトの識別情報。
対話型 ksh のシステム全体のコマンド。
ログインベースのデバイスアクセス権。
本日のメッセージ。
マシンのシャットダウン中にログインしようとするユーザーへのメッセージ。
パスワードファイル。
システム全体の sh と ksh のログインコマンド。
ユーザーの暗号化パスワードのリスト。
ユーザーのデフォルトのコマンドインタプリタ。
最後にログインした時間。
失敗したログイン試行の記録。
アカウンティング。
アカウンティング。
ユーザー your-name 用のメールボックス。
このファイル内で次のフラグのデフォルト値を設定可能。デフォルト値は、/etc/default/login ファイル内のコメント (ULIMIT=0 など) として指定されます。
/etc/default/login ファイルは廃止されています。However, you can use the svc:/system/account-policy:default service to set the corresponding SMF properties.
次の表に、/etc/default/login 内のプロパティーと SMF プロパティーとの対応関係の一覧を示します。
|
SMF プロパティーの管理については、 account-policy (8S) のマニュアルページを参照してください。
/etc/default/login ファイル内のプロパティーの説明を次に示します。
シェルの HZ 環境変数を設定。
ログインのファイルサイズの制限を設定。設定はディスクブロック単位で、デフォルトはゼロ (制限なし)。
設定されていれば、ルートはそのデバイスにのみログイン可能。ただし、rsh(1) によるリモートコマンドの実行は可能。ルートでログインできるようにするには、この行をコメントにします。
ログインに NULL 以外のパスワードが必要かどうかを指定。
ログイン時に SHELL 環境変数を設定するかどうかを指定。
初期シェルの PATH 変数を設定。
ルート用初期シェルの PATH 変数を設定。
ログインセッションを終了するまでの待ち時間を秒単位 (0 から 900 の間) で設定。
初期シェルのファイル作成モードマスクを設定。umask(1) を参照。
LOG_NOTICE レベルでのルートによるログインすべてと LOG_CRIT レベルでの失敗したログイン試行を記録するのに syslog(3C) の LOG_AUTH を使うかどうかを指定。
存在し、かつ、ゼロより大きい場合、ログイン試行が RETRIES 回だけ失敗したあと、あるいは、PAM フレームワークが PAM_ABORT を戻したあとに login が待つ秒数。デフォルトは 20 秒。最小は 0 秒。最大はない。
存在する場合、ログイン失敗メッセージを画面に表示するまでに待つ秒数を設定。これは PAM_ABORT 以外のログイン障害用。RETRIES に到達していない場合、あるいは、PAM フレームワークが PAM_MAXTRIES 回だけ戻されている場合、別のログイン試行が許可されます。デフォルトは 4 秒。最小は 0 秒。最大は 5 秒。
su(8) と sulogin(8) はどちらも、SLEEPTIME の値によって影響を受けます。
ログインを再試行する回数を設定 (pam(3PAM) を参照)。デフォルトは 5。最大の再試行回数は 15。自動ロックが構成されている場合 (前述の「セキュリティー」節を参照)、そのアカウントはロックされ、login は終了します。自動ロックが構成されていない場合、そのアカウントはロックされずに、login が終了します。
何回ログインに失敗したら、syslog (3C) LOG_NOTICE 機能によってログインに失敗したことを通知するメッセージが記録されるかを指定します。たとえば、変数の値が 0 に設定されている場合、login は失敗したログインをすべて記録します。
/etc/default/login に示されているフラグのうち、sshd(8) では次が使用されます。
PATH
SUPATH
UMASK
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
csh(1), exit(1), ksh(1), ksh88(1), mail(1), mailx(1), newgrp(1), passwd(1), rlogin(1), rsh(1), sh(1), shell_builtins(1), telnet(1), umask(1), rcmd(3C), syslog(3C), ttyname(3C) and pam(3PAM), termio(4I), auth_attr(5), exec_attr(5), hosts.equiv(5), issue(5), logindevperm(5), loginlog(5), nologin(5), nsswitch.conf(5), pam.conf(5), passwd(5), policy.conf(5), policy.conf(5), profile(5), shadow(5), user_attr(5), user_attr(5), utmpx(5), wtmpx(5), attributes(7), environ(7), pam_authtok_check(7), pam_authtok_get(7), pam_authtok_store(7), pam_dhkeys(7), pam_passwd_auth(7), pam_unix_account(7), pam_unix_auth(7), pam_unix_session(7), in.rlogind(8), in.telnetd(8), logins(8), quota(8), sshd(8), su(8), sulogin(8), syslogd(8), useradd(8), userdel(8), account-policy (8S)
ユーザー名またはパスワードが一致しません。
ルートでのログインが拒否されました。/etc/default/login の CONSOLE 設定を確認してください。
passwd(5) データベースに指定されているユーザーのホームディレクトリが見つからないか、アクセス権が正しくありません。システム管理者に問い合わせてください。
passwd(5) データベースに指定されているシェルを実行できません。システム管理者に問い合わせてください。
マシンがシャットダウンの処理中であり、ログインが無効になっています。
ルートによるログインを不能にするために CONSOLE を使用する場合は、ルートによるリモートコマンドの実行も不能にする必要があります。詳細については、rsh(1)、rcmd(3C)、および hosts.equiv(5) を参照してください。