lovelyplace
私のアプリケーションを次にデプロイする必要があります。構造スクリプト。残念ながら、サーバーの設定が間違っていますが、私ができることは何もありません。引き続きサーバーを維持する必要があります。
非rootユーザーを使用して一般的なタスクを実行できますalice
。名前を で指定します。それでは他のユーザーがいるので、その人に電話してみましょうbob
。bob
root権限があります。サーバーを準備した管理者が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としてコンテンツを実行しますbob
。sudo whoami
印刷するのと同様の非対話型ライナーが必要ですbob
。そうしないと、スクリプトを介してアプリケーションをデプロイできません。
sudo su - bob
スクリプトでこの奇妙な動作を模倣する方法に関する提案はありますか?
修正する: bob
ルートと同じ権限がありません。彼はsudoerなどを読むことができないので、より高い権限を持っていますが、alice
明らかにルート設定を調整する権限はあまりありません。
ベストアンサー1
実行したいコマンドをコマンドの標準入力sudo su - bob
(したがってコマンドが生成するシェル)に渡すことができる必要があります。
sudo su - bob <<ENDCOMMANDS
echo "Running as:"
whoami
echo "done now...
ENDCOMMANDS