今日、Sudoを実行する別のユーザーとして実行中の画面が機能しないことがわかりました。
つまり.
ssh bob@server # ssh into server as bob
Sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
「モニター」ユーザーとして実行するスクリプトがあります。画面に出力を表示するために、画面セッションで実行します。問題は、自分のアカウント(bob、james、susieなど)でログインする多数のユーザーがいて、「監視」ユーザーにSudoしていることです。 「モニター」ユーザーにアクセス権を与えることは問題外です。
画面を起動する前に、script /dev/null
をsu
のユーザーとして実行してみてください。これはゲットーの小さなハックですが、画面を快適にするはずです。
私はSudo su
を使用するユーザーに対してscreen
のラッパー関数を使用しています。これは、ユーザーに追加したラッパー関数です~/.bashrc
:
関数screen(){ /usr/bin/script -q -c "/ usr/bin/screen $ {*}" /dev/null }
これにより、使用したいscreen
のすべてのオプションとパラメーターを使用できます。この機能をシステム全体に導入することを考えています。
このエラーについて話していると仮定します。
$ Sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.
これがワンライナーです(たとえば、「エイリアスゴボブ」として使用できます)。
Sudo su - bob -c "script -c bash /dev/null"'
説明:
これにより、シェル(ログインシェルと同様)がユーザーbobとして起動します。ユーザーbobがscript
を開始します。これは、bash(ダッシュまたはksh ...の可能性があります)を呼び出すように指示され、セッションのコピーが破棄されます。
いずれにせよ、ホストにSSH接続していると仮定すると、〜monitor/.ssh/authorized_keysファイルで監視アカウントへのアクセスが必要な各ユーザーの公開sshキーを追加できます。次に、各ユーザーのリモートマシンで実行できます
ssh -t [email protected] screen -RD
おそらく、問題のデバイスのアクセス許可を変更するか、そのデバイスを読み取るアクセス許可を持つグループにモニターを追加する必要があります。それが私の最初の傾向です。しかし、そうすることのセキュリティへの影響を比較検討する必要があります。
あなたは言う:
Sudo su "monitor" -
トレーリングダッシュについて気になります。私は通常します:
Sudo su - username
ダッシュ(su manページごと)は、suに「シェルをログインシェルにする」ように指示します。つまり、通常のシェル起動スクリプトをすべてソースし、PATHやHOMEなどを適切に設定します。
「その他」に読み取り/書き込み権限を与えるだけです。
Sudo chmod o+rw /dev/pts/0
次にscreen
をもう一度お試しください