同じスクリプトでコマンドを実行するためにbashスクリプトでユーザーIDを切り替え/変更するにはどうすればよいですか?


11

外部スクリプトを呼び出さずにいくつかのコマンドを実行してrootから他のコマンドの実行に戻るには、スクリプト内のユーザー識別情報(インストールプロセスの一部としてrootとして実行される)を切り替える方法はありますか?

並べ替え:

#!/bin/bash
some commands as root
SWITCH_USER_TO user
some commands as user including environment variables checks, without calling an external script
SWITCH_USER_BACK
some other stuff as root, maybe another user id change...


あなたはこの答えを見ておくべきですstackoverflow.com/a/17758312/1243547
クラウス

回答:


25

いいえ。しかしsudo、シェルを実行してコマンドを入力するためにヒアドキュメントを使用するために使用できます。

#!/bin/bash
whoami
sudo -u someuser bash << EOF
echo "In"
whoami
EOF
echo "Out"
whoami

これは確かに同じスクリプトで一緒に物事を維持するのに仕事をしていませんし、すべてがEOFの後に閉じ括弧1行で包まれている場合も、コマンド置換を使用することができます
a1an

この答えは、この答えが重複するという質問のすべての答えよりも優れています。
ダン・ダスカレスク2014

私がこれをやるとしたら、私はEOFを使用せず、代わりにheredocの名前をSUDOに変更したいと思います。そのようにして、私は自分が含んでいるコードの中でスーパーユーザーとして走っていることを思い出すでしょう。
Joe Heyming

何らかの理由で、heredocコマンドでvarsを設定してもvarsが設定されていないようです。私が試してみるBLA="something"と、例えば:echo "In: $BLA"それは、BLAは空のようです
Efren
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.