2017-01-12 7 views
0

sudoからいくつかのコマンドを使用する際に問題があります。centos 6.4、sudo -u -Hが機能しません

以下のコマンドをCentos 6.4で試してみましたが、エラーが発生しました。

sudo -u someuser -H bundle install 
sudo: bundle: command not found 

しかし、私はUbuntu 14.04で同じコマンドを試してもうまく動作します。

bundleだけでなく、多くのコマンドでも同じエラーが発生します。たとえば、ruby, nodeです。しかし、いくつかのコマンドは正常に動作します。たとえば、echo, mkdir, touch ...

誰でもいくつかのアイデアがありますか?

答えて

0

secure_path/etc/sudoersで、sudoでバイナリを実行するときにパスがきれいであることを確認します。 CentOSのでは、いくつかのコマンドは、(エコー、MKDIR、...触っ)発見された理由を説明し

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin 

のようなものを持っている必要があります。このフォームで

あなたは($ PATHのような)環境変数を保つことができる

sudo -u someuser "PATH=$PATH" bundle install 

man sudo

から環境変数も コマンドに渡すことができるコマンドに設定しますVAR = valueの形式の行、たとえば LD_LIBRARY_PATH =/usr/local/pkg/lib。コマンド に渡された変数は、通常の環境変数と同じ1つの重要な例外を除いて同じ の制限を受けます。 sudoersにsetenvオプションが設定されている場合、 を実行するコマンドにSETENVタグが設定されているか、一致したコマンドがALLの場合、ユーザは 変数を設定しないと禁止されます。詳細については、sudoers(5)を参照してください。

システムのセキュリティポリシーに応じて、上記の方法の代わりに-Eを使用できます。

-Eザ・-E(環境保全)オプションは、ユーザーが既存の の環境変数を維持することを希望するセキュリティポリシーに示します。 -Eオプションが指定されていて、ユーザーに環境を保護する権限がない場合、セキュリティポリシーによってエラーが返されることがあります。

+0

ありがとうございました。 sudoersを修正してこの問題を修正しました。デフォルトはsecure_path =/sbin:/ bin:/ usr/sbin:/ usr/bin =>デフォルトはsecure_path =/sbin:/ bin:/ usr/sbin:/ usr/bin:/ usr/local/bin' –

関連する問題