名前

login - システム上のセッションを開始する

書式

login [-p] [-h host] [-H] [-f username|username]

説明

login は、 システムにサインインする際に用いられる。 引数が与えられなかった場合、 login はユーザー名の入力を求める。

ユーザーは、 必要に応じてパスワード入力が求められる。 パスワードの漏洩を防ぐため、 エコー表示は行われない。 パスワード入力の失敗は、 一定回数だけ許容される。 それを超えたら、 login は終了して、 接続リンクは切断される。 設定ファイル項目 セクションの LOGIN_RETRIES を参照。

パスワードの期限設定が有効になっていた場合、 ユーザーが操作を進めるにあたって、 新たなパスワード入力が求められる。 この場合、 古いパスワードの入力が必要であり、 新たなパスワード入力を行って作業を進める。 詳しくは passwd(1) を参照のこと。

ユーザー ID とグループ ID は、 /etc/passwd ファイル内の値に従って設定される。 ただし、 ユーザー ID がゼロの場合だけ例外である。 この場合は、 アカウントのプライマリグループ ID のみが設定される。 これは、 ネットワークに問題が発生しても、 システム管理者がログインできるようにするためである。 環境変数 $HOME$USER$SHELL$PATH$LOGNAME$MAIL は、 パスワードエントリーの対応するフィールドに従って設定される。 特に設定がない場合、 一般ユーザーに対しての $PATH のデフォルトは、 /usr/local/bin:/bin:/usr/bin である。 また root ユーザーにおけるデフォルトは、 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin である。

環境変数 $TERM は、 設定があればその値が維持される。 設定がなければ、 操作している tty の端末タイプに初期化される。 -p オプションが指定されていれば、 その他の変数は維持される。

PAM によって定義された環境変数は、 常に保持される。

その後に、 ユーザーのシェルが起動する。 /etc/passwd において、 そのユーザーに対するシェルが設定されていない場合は、 /bin/sh が用いられる。 /etc/passwd において、 ホームディレクトリが設定されていない場合は、 / が用いられて、 その後に、 以下に示す .hushlogin チェックが行われる。

.hushlogin ファイルが存在している場合は、 「静かに」ログインが行われる。 この場合、 メールのチェック、 前回ログイン時刻の表示、 本日のメッセージ表示がいずれも行われなくなる。 そのファイルが存在せず、 /var/log/lastlog が存在していれば、 前回ログイン時刻が表示されて、 現在のログインが記録される。

オプション

-p

getty(8) が利用するものであり、 login に対して、 環境変数を維持するように指示する。

-f

ログイン認証をスキップするために用いられる。 このオプションは、 通常 getty(8) の自動ログイン機能によって利用される。

-h

他のサーバー (たとえば telnetd(8) など) が用いるものであり、 login に対して、 リモートホスト名を受け渡すことを指示する。 これによって utmp と wtmp が置き換えられる。 このオプションを利用できるのは、 スーパーユーザーのみである。

-h オプションは、 PAM service name に影響を及ぼす。 標準のサービス名は login であるが、 -h オプションを使うと、 その名前は remote になる。 したがって、 PAM 設定ファイルは適切に生成しておく必要がある (つまり /etc/pam.d/login/etc/pam.d/remote)。

-H

他のサーバー (たとえば telnetd(8) など) が用いるものであり、 login によるログイン時には、 ホスト名の表示を行わないことを指示する。

-h, --help

ヘルプを表示して終了する。

-V, --version

バージョンを表示して終了する。

設定ファイル項目

login は、 設定ファイル /etc/login.defs を読み込む (login.defs(5) 参照)。 この設定ファイルは、 別パッケージ (通常 shadow-utils) から提供されているかもしれない。 login に関係するのは、 以下の設定項目である。

MOTD_FILE (文字列)

ログインの際に表示される「本日のメッセージ」を含むファイルやディレクトリを、 ":" で区切ったリストとして指定する。 指定されたパスがディレクトリである場合、 対象となるのは、 拡張子 .motd を持つファイルすべてであり、 バージョンにより並び替えて利用される。

そのデフォルト値は、 /usr/share/misc/motd:/run/motd:/etc/motd である。 MOTD_FILE が空の場合、 または「静かな」ログインが有効な場合は、 「本日のメッセージ」は表示されない。 なお同様の機能は、 PAM モジュール pam_motd(8) からも提供される。

MOTD_FILE におけるディレクトリは、 バージョン 2.36 からサポートされている。

なお login は、 pam_motd の動作とは異なり、 ファイル名を上書きする動作は実装されていない (MOTD_FIRSTONLY も参照)。 ただし、 すべてのファイル内容は表示される。 It is recommended to keep extra logic in content generators and use /run/motd.d rather than rely on overriding behavior hardcoded in system tools.

MOTD_FIRSTONLY (ブール値)

MOTD_FILE のリスト内に、 最初にアクセスできる項目を見つけた後は、 その次の MOTD_FILE で指定される内容は、 表示しないようにする。 なお、 この処理は、 ディレクトリに対しても当てはまる点に注意すること。 このオプションを利用すれば、 pam_motd により近い処理内容として、 login を利用できる。 このオプションのデフォルト値は no である。

LOGIN_PLAIN_PROMPT (ブール値)

login に対して、 login: プロンプト上にホスト名を表示しないように指示する。 これは、 コマンドラインオプション -H と同じ指定である。 デフォルト値は no である。

LOGIN_TIMEOUT (数値)

ログインに要する最大秒数。 デフォルトは 60 である。

LOGIN_RETRIES (数値)

パスワードの入力誤りに対しての、 ログインリトライの最大回数。 デフォルト値は 3 である。

LOGIN_KEEP_USERNAME (ブール値)

認証に失敗した場合であって、 ユーザー名は適正であった場合に、 パスワード入力のためのプロンプトのみを表示させるようにする。 デフォルト値は no である。

FAIL_DELAY (数値)

ログインに失敗してから、 次に 3 回のログイントライが認められるまでの時間。 秒単位指定。 デフォルト値は 5 である。

TTYPERM (文字列)

端末権限。 デフォルト値は 0600 であり、 tty グループが用いられていれば 0620 である。

TTYGROUP (文字列)

ログイン tty を TTYGROUP に所有させる。 デフォルト値は tty である。 TTYGROUP は存在しない場合、 端末の所有権は、 ユーザーのプライマリグループに設定される。

TTYGROUP には、 グループ名か、 あるいはグループ ID を指定することができる。

HUSHLOGIN_FILE (文字列)

これが定義されている場合、 ログイン操作中での余計な入力は、 すべて禁止される。 ここにフルパス名 (たとえば /etc/hushlogins) が指定された場合、 このファイル内に、 ユーザー名やシェルが記述されていれば、 ハッシュモードが有効化される。 システム全体のグローバルなハッシュログインファイルが空の場合は、 ハッシュモードが全ユーザーに対して有効化される。

フルパス名が指定されなかった場合、 ユーザーのホームディレクトリに、 そのファイルが存在すれば、 ハッシュモードが有効化される。

デフォルトは /etc/hushlogins のチェックを行う。 これが存在しない場合は ~/.hushlogin のチェックを行う。

HUSHLOGIN_FILE 項目が空の場合、 チェックはすべて無効化される。

DEFAULT_HOME (ブール値)

ホームディレクトリへの移動ができなかった場合に、 ログインを許可するかどうかを表す。 これが yes に設定された場合、 ホームディレクトリへの移動ができなかった際には、 ルート (/) ディレクトリに移動して、 ログインを行う。 デフォルト値は yes である。

LASTLOG_UID_MAX (負でない数値)

lastlog において、 更新が可能なユーザー ID 番号の最大値。 より大きなユーザー ID 番号は、 通常は、 リモートユーザーや認証サービスを追跡するためのものであるため、 それに対して、大容量の lastlog スパースファイルを生成する必要がなくなる。 設定内に LASTLOG_UID_MAX オプションの指定がなかった場合は、 lastlog エントリーに書き込むユーザー ID に、 制限がないことを意味する。 デフォルト値は ULONG_MAX である。

LOG_UNKFAIL_ENAB (ブール値)

ログインに失敗した記録において、 不明なユーザー名の表示を有効にする。 デフォルト値は no である。

なお、 ログインした不明なユーザー名を表示すると、 セキュリティ上の問題となるかもしれない点に注意すること。 ユーザーが、誤ってユーザー名にパスワードを入力している場合があるからである。

ENV_PATH (文字列)

これが設定されている場合、 通常ユーザーがログインした際の、 環境変数 PATH の設定に用いられる。 デフォルト値は /usr/local/bin:/bin:/usr/bin である。

ENV_ROOTPATH (文字列), ENV_SUPATH (文字列)

これが設定されている場合、 root ユーザーがログインした際の、 環境変数 PATH の設定に用いられる。 ENV_ROOTPATH の方が優先される。 デフォルト値は /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin である。

ファイル

/var/run/utmp, /var/log/wtmp, /var/log/lastlog, /var/spool/mail/*, /etc/motd, /etc/passwd, /etc/nologin, /etc/pam.d/login, /etc/pam.d/remote, /etc/hushlogins, $HOME/.hushlogin

バグ

BSD において文書化されていない -r オプションは、 サポートされていない。 rlogind(8) の各種プログラムの中で、 これを必要とするものがあるかもしれない。

再帰的なログインは、 かつては可能であったが、 今では動作しない。 たいていは su(1) を代わりに使えば十分である。 実際に、 セキュリティ上の理由から、 login はシステムコール vhangup(2) を利用して、 tty 上で待ち受けを行っているプロセスを、 可能な限り削除している。 これはパスワード漏洩を防ぐ目的がある。 コマンド login を使ってログインを行うと、 その時点で tty の本当の所有者ではなくなるため、 関連するシェルは vhangup(2) によって kill される。 これは、トップレベルのシェルか xterm 内から exec login を実行すれば、 防ぐことができる。

作者

BSD login 5.40 (1989/09/05) に基づいて

が HP-UX 向けに構築。 Linux 0.12 向けのポートは

PAM のみのバージョンへの書き換えは

関連項目

mail(1), passwd(1), passwd(5), utmp(5), environ(7), getty(8), init(8), lastlog(8), shutdown(8)

バグ報告

バグ報告は、 以下にある issue トラッカーを利用すること。 <https://github.com/util-linux/util-linux/issues>.

入手方法

logins コマンドは util-linux パッケージの一部であり、 以下からダウンロードできる。 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.