停電/アップグレード後にFreeBSDが起動しませんか? (ntpdの問題...)

停電/アップグレード後にFreeBSDが起動しませんか? (ntpdの問題...)

編集する:背景説明のために元の質問を残してください。興味がなければ、区切り線の下にスキップしてください。 )

私が住んでいる家は最近停電になりました。残念ながら、当時私は出張していたので、UPSバッテリーが放電する前にシステムを完全にシャットダウンできませんでした。

私のLinuxボックスは問題ないようですが、FreeBSD(12.1)ボックスは起動しません。ログインプロンプトではなく、権限のないシェルに直接入り、ログインすら許可していませんsu

tty開始メッセージも(スクロールしたので最善を尽くして)確認しましたが、/var/log/messages潜在的な問題の唯一の兆候は次のとおりです。

  • 怒っているビープ音(POSTビープ音より低く、やや長い)
  • 「MSI-Xテーブル」に関するエラーメッセージ
  • /読み取り専用でインストール

私は手動で実行しましたfsck(シングルユーザーモードで起動すると、システムが実際にはそれを使用できないことを除いて正常に動作しているようです)きれいです。ストレージアレイ(OSはUFSにありますが、ボックスはデフォルトではNASです)でzpoolスクラップを実行しており、エラーは予想されません。一部の開いているsshfs接続を除いて、システムは電源が切れている間は何もしません。

その他の注意事項:

  • システムはもともとFreeBSD 12.0としてインストールされ、アップグレード後に起動しなかった可能性があります。
  • ルートFSがマウントされ、そのまま「見えます」。 (読む:lsいくつかのディレクトリを見てみましたが、期待したファイルがそこにあるようです。
  • 私はポート(主にGNU CLIツール)からいくつかをインストールしましたが、私が知っている限りkmodやそれに似たものはありません。このシステムはかなり基本的な予算のAMD + APUです。
  • すべての物理キー入力が記録されていると思いますか/var/log/messages

何が間違っている可能性がありますか?


編集する:まあ…私は少し愚かですが、まだWTFですか?状態。しかし、マシンがインストールされて以来これを行っていないのか、今はよくわかりません。今何が起こっているのか気づいたので、以前見たようで、停電とは関係ありません。 (頻繁に再起動しないと言いましたか?)

私はついに私が投げた殻から興味深いものを見つけました。それを見つけることができますか?開始後の最後の数行は次のとおりです。

Updating motd:.
Mounting late filesystems:.
Security policy loaded: MAC/ntpd (mac_ntpd)
Starting ntpd.
[ntpd@<redacted> /]$ █

...それがすべてです。ログインもなく、エラーもなく、ネットワーキングもなく、上記の完全に破損したコマンドプロンプトのみが表示されます。

だからなぜ正確に何をしているのでしょうか? (ヒント:^ Dが問題を「修正」しました。問題が見つかった場合は見つけたかもしれませんが、なぜこれは可能でしょうか?システムを維持せずにシステムを起動したい!私はこれも動作しないデーモンがあることを意味すると思います。

答え1

これを達成する方法はいくつかありますが、最も簡単な方法の1つは設定を破壊し、それ自体ntpd_flags/etc/rc.confコマンド注入攻撃を効果的に実行することです。

これがrcシェルスクリプトベースのシステムを正しく実行するのが難しい理由です。これは非常に難しい徹底的に特に書式指定子がprintf欠落している場合は、追加のシェルコマンドが(偶然に)挿入される可能性があるすべての方法を守ってください。%q

FreeBSDのMewburnrcスクリプトには、そのような事故に対する防御コーディングはほとんどありません。たとえば、ファイル名にntpd_configスペースが含まれていると機能しません。これは一部に比べて非常にマイナーな引用です。

はい、これは緊急シェルではありません。

答え2

ああ、難解です(そして私がBSDについて嫌いなこともあります)。

FreeBSDのデフォルトシェルは(t?)cshです。私はcshが嫌いです。だから.cshrcbashを実行するための行を挿入しました。

問題: ルート (nb) で ""su -m実行されているすべてのシェルはコマンド引数を受け入れることができません。 (対話型!)bashのみが実行されます。

解決策:代わりにbashを実行してください.login(これは明らかにcshに固有のものです)。

関連情報