web-dev-qa-db-ja.com

仮想コンソール(ctrl + alt {f1-f6})に対してのみbashタイムアウトを設定できますか?

TMOUT 変数を設定して、指定した非アクティブ期間の後にbashセッションを自動的に終了できることを知っています。ただし、私が欲しいのは、そのonlyを6つの組み込み仮想コンソールに適用することです。 ctrl+alt+ {F1.。F6}。

ターミナルを開きたいときは、ほとんどの場合、ターミナルアプリを使用します。コンピュータを離れるときは、画面をロックして、だれもそれらの端末にアクセスできないようにします。だから私はそれらにタイムアウトを持たせたくありません。

ただし、まれに、仮想コンソールの1つを使用してコンピューターで作業することがあります。通常、メインのGnomeセッションがフリーズしているか、使用できないことが原因です。問題のあるアプリを強制終了してから、メインセッションに戻ります。

その上、Gnomeセッションを復元したときに、仮想コンソールを終了するのを何度か忘れました。したがって、Gnomeで画面をロックすると、GUIのみがロックされるため、離れるとコンピュータは完全に保護されなくなります。ユーザーは仮想コンソールに切り替えて、私のgnomeロック画面を強制終了するか、そうでなければ私のコンピューターを台無しにする可能性があります。

ターミナルアプリセッションを無期限に非アクティブのままにして、組み込みの仮想コンソールにのみタイムアウト値を設定できますか?

7

グラフィカル端末で実行しているかどうかを確認し、実行していない場合はTMOUTのみを設定できます。これを行う簡単な方法は、ttyコマンドです。

   tty - print the file name of the terminal connected to standard input

GUIターミナルエミュレータから実行する場合:

$ tty
/dev/pts/5

仮想コンソールから実行する場合:

$ tty
/dev/tty2

したがって、これらの行を~/.profileに追加すると、10分後にbashセッションが強制終了されます。

tty | grep tty >/dev/null && TMOUT=600
9
terdon

これは、pam_env.soPAMモジュールの良いケースです。仮想コンソールのログインはloginプログラムを使用するため、/etc/pam.d/loginを開いて、次のような行を追加できます。

session  required  pam_env.so  readenv=1 envfile=/etc/vc-environment user_readenv=0

付随する新しいファイルとともに、/etc/vc-environment

TMOUT=600

これにPAMを使用する2つの利点:

  • これは、仮想コンソールにログインするすべてのユーザーに適用されます(ただし、後でTMOUTを変更することはできません)。
  • タイムアウトは、Sudoなどの他の特定のサービスにも適用できます。

ここを読んでください このモジュールの詳細については。

1
billyw

私はTMOUTソリューションが好きではありませんでした。まず、プロンプトでセッションを終了した場合にのみ機能するためです。 Vim内に置いたままにしたり、Sudoパスワードプロンプトを表示したりしても、タイムアウトにはなりません。次に、グラフィカル環境と同じように、セッションを閉じたくない、ロックしたい。

GNU Screenはアイドル期間の後にロックできるので、私は次のことを行いました。 ~/.bashrcの冒頭で、これを追加しました。

if [ "$TERM" = "linux" ] && tty | egrep -q '^/dev/tty[[:digit:]]+$'
then
    exec screen -c ~/.ttyscreenrc
fi

execは、screenがBashを置き換えることを保証し、終了するとTTYセッションが閉じられるため重要です。

そして~/.ttyscreenrcに私はこれを置きました:

startup_message off
idle 180 lockscreen

Screenのウェルカム画面をスキップし、3分間操作がないとロックします。

1
ateijelo