6

でシェル スクリプトを記述した場合、$HOME/path/to/script/myscriptそのスクリプトを正しく実行する必要があるように思えます。export PATH=$PATH:$HOME/path/to/script/sudo -E myscript

sudo のマニュアルページから:

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

しかしsudo -E script、コマンドが見つかりません。の変数を/absolute/path/to/script/決定するファイルに追加するだけでよいことはわかっていますが、それは私が取りたいアプローチではありません。PATHsudo env

コメントに対処するには:
@H2CO3 : ネット上に浮かんでいるのを見たことがsudo sudoありますが、それは文字通り「スーパーユーザーを実行するためのスーパーユーザー権限を与えてください」と言っています。問題が解決するかどうかはわかりませんが、根本的に欠陥のあるアプローチのようです。それからまた、90 年代半ばに linux/bsd システムを使い始めたので、sudoコマンド自体だけに問題があります。
@rici : スクリプトには実行権限がありますが、* nix システムで何かが実行されない場合は常に確認する必要があります =)

4

1 に答える 1

10

/etc/sudoers には、デフォルトで環境をリセットする設定があります。また、sudo -E [cmd] を実行したときに有効になるデフォルトの secure_path も定義します。

/etc/sudoers ファイルを編集して「env_keep」を追加し、保持する変数を指定する必要があります。

デフォルト env_keep += "PATH"

ただし、この前に secure_path 行をコメントアウトしてください。次に、sudo -E 経由でコマンドを試してください。

于 2013-09-11T18:54:58.360 に答える