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コマンドを追加するのはどうですか?