Rootとしてsuでログインしているときに「X」をクリックするか「ctrl + d」を使用してシェルを閉じるのは安全ですか、それとも「exit」と入力して閉じるのが安全ですか? (セキュリティに関して)何か違いはありますか、それとも同じであり、どのように使用しても問題ありませんか?
Ctrl-Dまたはexit
は同じです。
「X」を使用する場合、ウィンドウマネージャーは終了信号をシェルに送信します。最終的には同じ結果になります。シェルが反応しない場合、ユーザーは通常警告を受け取り、シェルを強制的に終了できます(kill -9 $PID
と同じ)。
シェルとしてzsh
を使用している場合、「X」メソッドとexitメソッドには小さな違いが1つあります。バックグラウンドプロセスを実行している場合、exit
/ctrl-Dが最初に生成されます。シェルが2回目に閉じられたときは、「実行中のジョブがあります」という警告メッセージのみが表示されます。 「X」ボタンを使用すると、シェルは警告なしにすぐに終了します。
ターミナルエミュレータを閉じることは、CTRL + D
を押すことと同じではありません(オプションhuponexit
が設定されている場合を除く)。
ターミナルを閉じると(「X」をクリック)、ターミナルエミュレータはSIGHUPをシェルに送信します。 bashがSIGHUPを受信すると、すべてのジョブにSIGHUPも送信します。
CTRL+D
またはlogout
またはexit
を使用してターミナルを終了すると、シェルはすべてのジョブにSIGHUPを送信せずに終了します。これはデフォルトの動作ですが、bash shopt
設定huponexit
を設定することで変更できます。
したがって、最終的に、バックグラウンドで何も実行されていないことを確認することが目的の場合は、「X」をクリックする必要があります。
。
Jofelがコメントで提供した情報は正しくありません(申し訳ありませんがjofel)。ターミナルエミュレータは、シェルで実行されているジョブの手がかりがないため、それらを終了できません。
[〜#〜] note [〜#〜]:
この動作はシェルに完全に依存しています。シェルが異なれば、デフォルトの動作も異なる可能性があります。
違いはありません。 ^ Dを押すと、「exit」と入力するのと同じことをしていることになります。
$ su -
Password:
# [press ^D]
logout