
同じユーザーとしてログインtty1
してtty2
Xサーバーセッションを開始するtty1
と、ログアウトするとすぐにtty2
Xサーバーセッションがtty1
クラッシュします。
これは既知のバグのようです:
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=834270
- https://groups.google.com/forum/#!topic/linux.debian.user/2G71U8P8c3Q
バグレポートを読んだように、問題はclear_console
in呼び出しにあります~/.bash_logout
。その行を削除すると、すべてがうまく機能します。
私の質問:
私はどんな変化も見つけられませんでした。 (もちろん、Xサーバーがクラッシュしないことを除いて)ログアウトすると、その行を削除してもコンソールは消去されます。では、clear_console
そもそもそこに電話する目的は何ですか?
答え1
世界はあなたが画面をきれいにしたいです。
私が言ったようにhttps://unix.stackexchange.com/a/233855/5132実際にメーリングリスト討論で間接的に引用されたりもしました☺…
Greg Wooledgeや他の人が見つけたように、ログアウトとその後のログインの間に仮想端末を消去したくないのは、実際には傾向に反していることです。特権ユーザーまたは上司がログアウトした後も持続する機密出力は、1970年代からUnices(および実際には別の時分割リモートアクセスオペレーティングシステム)のセキュリティ上の問題であり、これらのすべての出力を取り消すにはかなりの努力が必要です。この問題を避けるために人々が置いたもの。ご覧のとおり、これを行うためにいくつかの入れ子になったメカニズムを紹介します。
- 多くのシステムでは、
clear_console
シェルログアウトスクリプトに標準コマンドがあります。 (カーネル仮想端末#1で実行されるグラフィックプログラムではうまく動作せず、他の種類の端末(仮想または実際)では動作しないため、これ自体が問題になります。)このコマンドは削除する必要があります。
- たとえば、仮想端末を対象とするgettyプログラムのデフォルト設定は、端末を消去すること
mingetty
です。 (ログインする前にこれを行います。つまり、TTYログインサービスが停止した場合、ターミナル出力は削除されていない可能性があります。皮肉なことに、この機能はより良い場所に配置されている可能性があります。PAMlogin
属性が必要ですのでログアウトしても実行されます。--noclear
この機能を無効にするには、このオプションを展開する必要があります。システムオペレーティングシステムでは、これには、ファイルを上書きしたり、設定を変更したり、ExecStart
単に[email protected]
自分が設計したローカルデバイスファイルを指す1つ以上のユニットファイルを作成することが含まれます。 - systemd が提供する
[email protected]
テンプレートサービスユニットセットは、TTYVTDisallocate=yes
systemd にカーネル仮想端末をクリアするよう指示します。 (これは名前が部分的に反映されるため、ユーザー空間の仮想端末を含む他の種類の端末では機能しません。)また、上書きまたは指定された他のサービステンプレートを使用して再度削除する必要があります
[email protected]
。
もちろん、正確に重なりません。 mingetty
シリアルデバイスを介して接続された実際の端末には役に立ちません。clear_console
奇妙なことに、Bourne Againシェルパッケージの一部であり、Korn、Z、Almquist、Fish、Watanabeなどを使用するユーザーアカウントの対話型ログインシェルとしては使用されません。人々が呼び出すシェルは、システムではTTYVTDisallocate
なくオペレーティングシステムでは機能しません。
私が数年前のメーリングリストの議論で述べたように、console_clear
これは倍増する必要はありません。 2011年以来、Linux組み込み端末エミュレータは3
スクロールバックバッファをクリアするED制御シーケンスをサポートしているため、当初はこれらの有害な副作用のある仮想端末を切り替える必要はありません。数年前、私はconsole-clear
この制御シーケンスをエクスポートするnoshツールセットにコマンドを追加しました(したがって、Linux組み込みターミナルエミュレータで使用できるだけでなく、リモート接続を介しても機能できます)。 ncursesコマンドは、terminfoによると、clear
関連する制御シーケンスを実行する方法も知っています。
もちろん、通常console-terminal-emulator
、端末の表示バッファは停止するとクリアされます。
追加読書
- https://unix.stackexchange.com/a/375784/5132
- グレッグ・ウリッジ(2014-04-08)。 私のクソコンソールのクリーニングはやめた。。グレッグのウィキ。
- ジョナサン・デ・ボイン・ポラード(2015-08-22)。Debian Jessie の複数の tty がシステムを停止します。。 [Eメール保護]。 Debian ユーザーです。
- https://unix.stackexchange.com/a/318297/5132
- ジョナサンデボインポラード(2018)。
console-terminal-emulator
。 スナックガイド。ソフトウェア。 - ジョナサンデボインポラード(2018)。
console-clear
。 スナックガイド。ソフトウェア。 - https://unix.stackexchange.com/a/316279/5132
- カステン・ヘイ(2015-08-09)。zsh:ログアウト時にコンソールを消去します(推奨設定を使用している場合)。 Debian のバグ #704968.
答え2
~によるとdlocate
、clear_console
(Debian)bashパッケージの一部です。アップストリームの一部ではありませんbash
源泉。これパッケージ変更ログいつ/どこから来たのか教えてください:
— マティアス・クローゼ 2006年3月23日木曜日 01:16:22 +0100 bash(3.1-3)緊急度=低。 ... Ubuntuからマージ: *clear_console: 以下を含むコンソールを消去する新しいヘルパー スクロールバックバッファ。 * /etc/skel/.bash_logout: 再インストールしてclear_consoleを使用します。 Ubuntu#29405。閉じる:#331504。
引用されたバグレポートには、これを追加した理由が記載されています。
- Ubuntu#29405、2006年1月「終了」の前に「clear」を実行しないでください。
F1-F6端末からログアウトすると、次のログイン画面が表示されますが、既存のすべてのアクティブ出力が画面に残ります。他のユーザーが個人出力を表示できないように、新しいログインが発生する前に画面を消去する必要があります。
- Debian #331504、2005年10月bash:デフォルトの/etc/skel/.bash_logoutを提供します。
bashがユーザーがコンソールを介してログインしたときに画面を消去するためにデフォルトで使用できるように、/ etc / skelにデフォルトの.bash_logoutを提供したことをお勧めします。これは、特に人々が他のものを望まないマルチユーザーの一般的な要求です。人々は自分が何をしているのかを知るために環境を利用します。
ところで、これは関連呪いここで:
- 赤いハット#815790 [RFE - 個人情報保護]コンソールを消去する、言及
- Debian #376841 ncurses-binにclear_consoleを追加します。
前者は機能を適用することによって解決される。xterm
パッチ #1071999(Linuxコンソールの場合)、後者はライセンスの非互換性のために何の成果も得られませんでした。
答え3
プライバシーとセキュリティと関係があると思います。セッション終了後、自分が何をしているのか他人に公開するのは賢明ではありません。私のDebianでは、エントリ全体.bash_logout
は次のとおりです。
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
$SHLVL
チェーンの最初のシェルの場合、値は1です。 (シェルから新しいシェルを起動でき、これが増加しますSHLVL
。)最初のセッションを終了してコンソールを転送し、誰にでもメッセージを表示した場合、コンソールは承認されていない人がセッションの内容にアクセスできないようにする必要があります。
答え4
initシステムの構成により、ttyが消去されています。最近はおそらくsystemd
。
systemdの場合は
TTYVTDisallocate
noに設定されます。これを行うには、
systemctl edit getty@tty1
次のコードを実行して入力します。[Service] TTYVTDisallocate=no
https://askubuntu.com/questions/58097/how-can-i-remove-the-clear-screen-before-login/781923#781923
このコメントは、sysvinitで利用可能な設定--noclear
オプションにも言及するより長いページを指しますgetty
。
http://mywiki.wooledge.org/SystemdNoClear
getty
最後に、明示的な機能(およびgettyのオプション)がすべてのバージョンで利用できない可能性があります。--noclear
システム管理者は、ログインプロンプトを表示する前に常にコンソールを消去するように設定できます。最も簡単な方法は、gettyの代わりにMingettyを使用することです。シリアルコンソールのサポートは失われますが、画面の消去などの一部の機能は入手できます。
-ログアウト後に端末を削除するにはどうすればよいですか?回答は2010年に公開されました。
したがって、bash_logoutはおそらく他のgettyに切り替えずに画面を消去する唯一の方法です。