スクリプトで「sudo su - user」を模倣する方法は?

スクリプトで「sudo su - user」を模倣する方法は?

lovelyplace私のアプリケーションを次にデプロイする必要があります。構造スクリプト。残念ながら、サーバーの設定が間違っていますが、私ができることは何もありません。引き続きサーバーを維持する必要があります。

非rootユーザーを使用して一般的なタスクを実行できますalice。名前を で指定します。それでは他のユーザーがいるので、その人に電話してみましょうbobbobroot権限があります。サーバーを準備した管理者がrootとしてのみ動作できるところにすべてをインストールしておいたので、bob私がするほぼすべての事に必ず必要です。

alice私が持っているのはアカウントパスワードだけです。私にはパスワードはありませんが、パスワードを入力して何かをすれば彼の力を使うことbobができると聞きました。sudo su - bob実際、シェルではこれを行うことができます(パスワードプロンプトはありません!)、ログインするとすべてのことbobができます。ただし、これはスクリプトで非対話型で実行する必要があります。それはまるでsudo su - bob && whoami

bobしかし、私は次のような力を得る他の方法を考えることはできません。

たとえば、sudo su -c whoami bob結果は[sudo] password for alice:次のようになります。Sorry, user alice is not allowed to execute '/bin/bash' as bob on lovelyplace.

私は多くの組み合わせなどを試しましたが、su結果sudoは常に同じです。パスワードプロンプト、その後拒否。

何かを調べなければなりませんプログラム的にIdentityとしてサーバーにログインaliceした後、Identityとしてコンテンツを実行しますbobsudo whoami印刷するのと同様の非対話型ライナーが必要ですbob。そうしないと、スクリプトを介してアプリケーションをデプロイできません。

sudo su - bobスクリプトでこの奇妙な動作を模倣する方法に関する提案はありますか?

修正する: bobルートと同じ権限がありません。彼はsudoerなどを読むことができないので、より高い権限を持っていますが、alice明らかにルート設定を調整する権限はあまりありません。

ベストアンサー1

実行したいコマンドをコマンドの標準入力sudo su - bob(したがってコマンドが生成するシェル)に渡すことができる必要があります。

sudo su - bob <<ENDCOMMANDS
echo "Running as:"
whoami
echo "done now...
ENDCOMMANDS

おすすめ記事