VM rootでログインし、su
をユーザーアカウントにログインしてscreen
を使用しようとすると、エラーがスローされます:
Cannot open your terminal '/dev/pts/0' - please check.
Stack Overflowの投稿によると、私はscript /dev/null
を使用して修正する必要があると言っていますが、機能しますが、script /dev/null
を入力する必要がある理由はまだ説明されていません。それが何をするのか、なぜそれを入力する必要があるのかを理解したいと思います。
/dev/pts/0
はrootが所有しているため開くことができません。別のユーザーに訴えた後は、そのパスを介して開くことはできなくなりますが、開いたハンドルを介してそれを使用することはできます。親プロセスから継承されたものです。
script /dev/null
は、現在のユーザーが所有する別のptyを作成します。
とにかく、そのバグ/制限はscreen
の最近のバージョン(たとえば4.99.0)で修正されたようで、SCM_RIGHTS
の補助メッセージを介して現在の端末にハンドルを正しく送信します端末の名前だけを送信する代わりにUNIXドメインソケットを使用し、screen
サーバーにそれを開こうと試みます(そして失敗します)。 tmux
も同じです。