web-dev-qa-db-ja.com

別のユーザーおよび実行画面としてのSudo

今日、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していることです。 「モニター」ユーザーにアクセス権を与えることは問題外です。

173
luckytaxi

画面を起動する前に、script /dev/nullsuのユーザーとして実行してみてください。これはゲットーの小さなハックですが、画面を快適にするはずです。

253
voretaq7

私はSudo suを使用するユーザーに対してscreenのラッパー関数を使用しています。これは、ユーザーに追加したラッパー関数です~/.bashrc

関数screen(){
/usr/bin/script -q -c "/ usr/bin/screen $ {*}" /dev/null
}

これにより、使用したいscreenのすべてのオプションとパラメーターを使用できます。この機能をシステム全体に導入することを考えています。

34
steviethecat

このエラーについて話していると仮定します。

$ 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 ...の可能性があります)を呼び出すように指示され、セッションのコピーが破棄されます。

7
basic6

いずれにせよ、ホストにSSH接続していると仮定すると、〜monitor/.ssh/authorized_keysファイルで監視アカウントへのアクセスが必要な各ユーザーの公開sshキーを追加できます。次に、各ユーザーのリモートマシンで実行できます

ssh -t [email protected] screen -RD

7
Alex

おそらく、問題のデバイスのアクセス許可を変更するか、そのデバイスを読み取るアクセス許可を持つグループにモニターを追加する必要があります。それが私の最初の傾向です。しかし、そうすることのセキュリティへの影響を比較検討する必要があります。

0

あなたは言う:

Sudo su "monitor" -

トレーリングダッシュについて気になります。私は通常します:

Sudo su - username

ダッシュ(su manページごと)は、suに「シェルをログインシェルにする」ように指示します。つまり、通常のシェル起動スクリプトをすべてソースし、PATHやHOMEなどを適切に設定します。

0
Doug Harris

「その他」に読み取り/書き込み権限を与えるだけです。

Sudo chmod o+rw /dev/pts/0

次にscreenをもう一度お試しください

0
Filippo Vitale