ターミナルでcat < /dev/ttys_
を使用します。
このOSX 10.9.2ダーウィンの動作は私には奇妙に思えます。なぜそれが起こっているのか、そしてそれが実際のOSまたはアプリケーションのバグであるかどうかを理解したいと思います。
/dev/ttys001
」、「/dev/ttys002
」に注意してください/dev/ttys001
)で、Sudo -u [some other user] sh
を実行します。/dev/ttys002
)で、cat < /dev/ttys001
(またはデバイスパスが何であれ)を実行します。関連するターミナルウィンドウにテキストを入力すると、顕著な遅延が発生します。さらに、文字はどちらのウィンドウにも確実に表示されません。一部の文字は2番目のウィンドウにエコーされ、一部は最初のウィンドウに表示され、一部は消えるように見えます。
これが私に関係する理由は、1人の特権のないユーザーによって実行された単純なコマンドが、別のユーザーのセッションを完全に中断する可能性があるように見えるためです。
3.何が起こっているのかについての誤解。
ユーザーID間でのテキストセッションに干渉していません。ここでセッションを実行しているのは1人のユーザーだけです。彼女をアリスと呼びましょう。アリスはコンソールにログインし、いくつかのターミナルエミュレーターを含む多数のアプリケーションを実行しています。
これらの端末の1つで、アリスはSudo -u bob sh
を実行します。現在、ボブのアカウントで実行されているシェルがありますが、ターミナルはアリスによって提供されています。ターミナルエミュレータプロセスは、ユーザーalice
として実行されています。
cat /dev/ttys42
をアリスとして実行すると、ボブが実行するシェルではなく、アリスが実行するターミナルエミュレーターをスヌーピングし、干渉することさえあります。
入力すると、端末からの入力を読み取っているプロセスのいずれかに各バイトがランダムに送信されるため、奇妙な現象が発生します。通常、端末にはフォアグラウンドプロセスが1つしかありません。ジョブ制御メカニズム、特に フォアグラウンドプロセスグループの管理 とSIGTTINシグナルによって確実になります。
/dev/ttys42
はアリスが所有していることに注意してください。ボブがターミナルエミュレータを実行している場合、/dev/ttys42
はボブが所有し、アリスは読み取りまたは書き込みができないため、アリスはそのレベルで干渉することはできません。ただし、この端末がアリスのGUIセッションにある場合、アリスはGUIレベルで干渉する可能性があります(たとえば、キーストロークをスヌーピングまたは挿入するか、ボブに、実行されたアプリケーションと実際に対話しているときに開始した端末と対話していると信じ込ませることによって)。アリスによる)。
ファイル(この場合は端末)に書き込むには、ファイルへの書き込み権限が必要です。デフォルトでは、ttyファイルはそれを使用するユーザーによって所有(および書き込み可能)であり、tty
グループによっても書き込み可能です。このグループにもデフォルトではroot
のみが含まれています。したがって、他の人のセッションをいじることは許可されていません。