2012-01-14 11 views
2

私はroot権限で実行されるスクリプトを持っており、スクリプトによって実行される特権で実行してはならないコマンドがあります。それらの特権なしでコマンドを実行する方法が必要です。ルートシェルで特権のないコマンドを実行する

私が判断できたことから、sudoのようなツールを使って別のユーザーとしてコマンドを実行できます。しかし、これを行うには、あらかじめ使用するユーザー名(またはID)の知識が必要です。これにより、1つまたは2つのセキュリティ上の問題も生じます。

私の質問です:単純にそのコマンドをroot権限で実行することは可能ですか?そうでない場合は、適切な選択肢がありますか?

答えて

4

あなたは確かに、このような低下権限でコマンドを実行するsudoを使用することができます。これはsudoersファイルに適切なエントリが必要になること

sudo -u USERNAME COMMAND 

またはより良い

sudo -u USERNAME -g GROUPNAME COMMAND 

注意。

ユーザの名前がわからず、一部の権限を下げてコマンドを実行する場合は、ユーザnobodyとグループnobodyまたはnogroupを使用できます。

+0

ありがとうございました。 「誰も」はまさに私が望むものです。 – seininn

2
su <non-root-user> -c 'some_command' 
1

私の質問は:単純にそのコマンドをrootとして実行することは可能ですか?高い特権なしで ?

いいえ。ルートアカウントの全体のポイントは、完全な権限を持つことです。実際には、の任意のアカウントには特権があります。 root特権なしで実行する方法は、root以外のユーザーとして実行することです。

そうでない場合は、適切な選択肢はありますか?

他の回答を参照してください。 特定の root以外のアカウントからコマンドを実行する必要があります。つまり、他のアカウントの名前(または数値UID)を知る必要があります。

Adam Zalcmanが示唆しているように、nobodyアカウントが適している可能性があります。あるいは、有効なアカウントを見つけるために/etc/passwdまたはそれと同等のものを読むことができます(実際のランダムなユーザーとして実行すると問題が発生する可能性があります)。

あなたはroot権限を持っているので、コマンドを実行する目的で新しいアカウントを(一時的に)作成できます。しかし、それはおそらく過剰です。

最も簡単な解決策は、ルート以外のアカウントを指定する方法を見つけることです。

+0

詳細な返信をありがとうございますが、「誰も」私が探していたものです。 – seininn

関連する問題