最小限のシステム情報を表示するために、ttyログインプロンプトを単純化/強化しようとしています。修正し/etc/issue
て/etc/motd
空になるように移動しました~/.hushlogin
。ほぼすべてが消去されます!
私のログイン経験は次のとおりです。
hostname login: user
Password:
user@hostname:~$
ログインプロンプトにホスト名を表示するのが気に入らず、追跡しました。これが私を作るマニュアルページagetty
、サービスファイルを修正しました。
/lib/systemd/system/[email protected]
と
/lib/systemd/system/[email protected]
、
--nohostname
次のようにExecStart行にオプションを追加します。
[Service]
ExecStart=-/sbin/agetty --nohostname --keep-baud 115200,38400,9600 %I $TERM
これは素晴らしい作品です。とは別に、ユーザーが間違ったパスワードを入力した場合。次に、前のプロンプトに戻り、ホスト名を表示します。
成功したログイン:
login: user
Password:
user@hostname:~$
ログイン失敗:
login: user
Password:
Login incorrect
hostname login:
もう1つは、間違ってログインしてから約60秒間コンソールを放置すると、「login」という単語の半分が印刷され、一時停止され、正しいログインプロンプトが表示されることです。
login: user
Password:
Login incorrect
hostname login:
Log
login:
この動作を説明する方法についてのアイデアはありますか? agettyのソースコードとShadowのソースコード(login.c)を見ると、ログインプロンプトが失敗した後に再び表示される場所がわかりますが、PAMを参照しているため、Linuxシステムの適切な部分を理解できません。 。
答え1
この動作は簡単に説明され、数十年前にUnixの最初のバージョンにさかのぼります。 getty
最初のログインプロンプトが印刷されますが、認証に失敗すると、プログラムは2番目とそれ以降のプロンプトを印刷し、login
このgetty
時点で自分自身を上書きします。
プログラムlogin
には、終了してプロセス#1によってログインサービスが再起動されるまでにログイン試行回数に制限があります。リモート物理端末があるシステムでは、端末装置がシャットダウンしてDTRが0に設定され、接続されているモデムの接続が切断されます。アイデアは、リモート接続を介してパスワードとアカウントを無差別に代入することを困難にすることです。 (複数の通話によって異なりますが、これは現地の料金でも攻撃者に費用がかかります。)同じ原因になる非アクティブタイマーもあります。 (アイデアは少し異なります。まだセッションにログインしていないリモート端末によって電話回線が無期限に割り当てられるのを防ぎます。)
仮想端末または実端末で地元の、モデムもなく、電話回線もなく、電話を切る通信会社もありません。ログインプロンプトを繰り返して監視デバイスを設定するこれらのメカニズムは、基本的に意味がありません。 login
ウォッチャーなしで無期限に待機でき、ログインサービスを安価に終了してリサイクルできます。すべて確認に失敗しました。しかし、彼らはまだ存在しており、まだ雇用されています。
残念ながら、agetty
util-linuxのプログラムでは、少なくともプロンプトのこの部分を構成できますが、login
Shadowのプログラムではそうではありません。 ログインプロンプトはプログラムコードに組み込まれています。
これは一般的ではありません。たとえば、FreeBSDシステムでプログラムが実行するプロンプトは、の設定で設定login
できます。login_prompt
/etc/login.conf
追加読書
- 」確認する》
login.conf
..FreeBSDファイル形式のマニュアル。 2011-07-08. - https://unix.stackexchange.com/a/316279/5132
- https://unix.stackexchange.com/a/340375/5132
- https://unix.stackexchange.com/a/236959/5132
- https://unix.stackexchange.com/a/233855/5132