web-dev-qa-db-ja.com

ターミナルエミュレータが接続されているttyを変更することは可能ですか?

ターミナルエミュレーター(たとえば、xterm)がある場合、デフォルトで/dev/pts/3のような疑似端末に接続します。

私が知りたいのは、たとえばtty1に直接接続できるかどうかです。

ttyに接続して、実際にそのttyにいるかのようにログインプロンプトを表示させることはできますか(を押して) Ctrl+Alt+F1 例えば)?

6
Cameron Ball

はいといいえ。子のイン/アウトストリーム(おそらくシェル)をリダイレクトできますが、xtermはほとんど関与しません。 xtermはそのptyのマスター側を所有します-それは/dev/ptmxでオープンを行い、その過程で/dev/pts/3を作成します。しかし、それはそれを与えます-xtermがそれをセッションリーダーにするので、あなたのシェルは今そのptyを所有しています。 xtermが行うのは、キーボードからの入力を取得してシェルに渡し、シェルからの出力を取得して画面に渡すことだけです。このようにして、xtermは多重化機能を実行します-疑似端末間で入力と出力を細分化してリダイレクトしますが、ptyがアップすると、ここでは他にあまり関係がありません。

ただし、仮想コンソールは別の問題です。ユーザーアカウントに適切なファイルシステム権限が割り当てられている場合は、他のプロセス(または他の端末)から簡単な方法で読み取りと書き込みを行うことができます。たとえば、マスター側を介して入力/出力を渡して会話する必要はありません。スレーブ側で実行されているプロセス。 loginが関係する場合、exceptionに関係するほぼすべての方法で、これらのことを簡単に行うことができます。killそのデバイス上のすべてのリスナーであり、キーボード入力のみを受け入れます。それがその仕事です。

それでも、あなたは何らかの認証ソリューションを探しているのではないかと思います。次の方法で、実質的に同じレベルのセキュリティを取得できます。

ssh -t localhost 'exec some process'

これにより、認証のプロンプトが安全に表示され、マシンにログインして、新しい疑似端末でsome processを実行します。たとえばxtermから実行できます。

3
mikeserv