sudo su特別な目的のユーザーとしてログインした残りのセッションを費やすためにのみ使用するマシンを定期的にsshで使用しています。一般的なワークフローは次のとおりです。
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
これをエイリアス化できる1行にまとめたいので、sudo su - specialuserボイラープレートを入力しなくても、各マシンにエイリアスを設定して、1つのコマンドで必要な場所に到達できます。私は多分設定することができme@othermachineへsudo suのログイン時に、私はのように動作する柔軟性維持したいのですがme、私はする必要がある場合を。
(注:私はothermachineそれを設定したり、その設定方法を制御したりすることはできません。これは、私が採用されたときに採用した確立されたワークフローです。)
私の最初の考えはちょうどだった
ssh me@othermachine "sudo su - specialuser"
この種の作品ですが、プロンプトが表示されず、^C強制終了してログアウトします。他にもさまざまなことが間違っていると思います。
フルログインシェルでリモートリモートsshコマンドを読んだ後、次のようなエキゾチックなものをいくつか試しました
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
そして
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
-どちらも私は機能することを期待し、機能しませんでしたが、完全性のためにそれらを試してみるべきだと思いました(重複してしまうのを避けるため)。彼らは同じプロンプトレスシェルを生成しました(2番目のは、のシェルからのmeアフタープロンプトプロンプトレスシェルを追加exitしたものですspecialuser)。そして私は試しました
ssh me@othermachine "sudo su - specialuser -c bash -l"
しかし、それは私をちょうど得ました
sudo: no tty present and no askpass program specified
より良いアイデア?
sudo私はヒットしたくないという考え^Cですか?私がもっと良いものを思いつくことができないなら、私はそれを試すかもしれません。
su meからできspecialuserます。または中.profileまたは.bashrc、あなたが従わない場合sudoでは exit、あなたの最初はexit背中に行くことができますmeセッションを終了するために、第2に、。または、フラグファイルを使用することもできます。そのsudo前[ -f ~/.keep.me ] && del ~/.keep.meと後[ \! -f ~/.keep.me ] && exitには次のmeようになり:>~/.keep.me; exitます。コマンドのスクリプトまたはエイリアスだけが必要です。これでexitセッションが終了meし、ログインセッションに戻ります。
~/.profile少し遅れてsudoコマンドを追加するのはどうですか?