このバグはかなり前から存在しているようです。役立つと思われるいくつかのバグ リファレンスを次に示します (購読/投票、ヒント、ヒント...):
Debian バグ #85123 (「sudo: SECURE_PATH はまだオーバーライドできません」) (2001 年から!)
このバージョンの sudo には Bug#20996 がまだ残っているようです。変更ログには、実行時にオーバーライドできると書かれていますが、その方法はまだわかりません。
彼らは、あなたの sudoers ファイルに次のようなものを入れることについて言及しています:
Defaults secure_path="/bin:/usr/bin:/usr/local/bin"
しかし、少なくともUbuntu 8.10でそれを行うと、次のエラーが表示されます:
visudo: unknown defaults entry `secure_path' referenced near line 10
Ubuntu バグ #50797 (「--with-secure-path でビルドされた sudo には問題があります」)
さらに悪いことに、私が知る限り、sudoers ファイルで secure_path を再指定することは不可能です。したがって、たとえば、ユーザーが /opt の下にあるものに簡単にアクセスできるようにしたい場合は、sudo を再コンパイルする必要があります。
はい。再コンパイルせずにこの「機能」をオーバーライドする方法が必要です。セキュリティ偏見者が環境にとって何が最善かを教え、それを無効にする方法を提供しないことほど悪いことはありません。
これは本当に迷惑です。セキュリティ上の理由から、デフォルトで現在の動作を維持するのが賢明かもしれませんが、ソース コードから再コンパイルする以外に、それをオーバーライドする方法があるはずです! 多くの人が PATH 継承を必要としています。なぜメンテナがそれを調査しないのだろうかと思います。これは、容認できる解決策を簡単に思いつくように思えます。
私はこのようにそれを回避しました:
mv /usr/bin/sudo /usr/bin/sudo.orig
次に、以下を含むファイル /usr/bin/sudo を作成します。
#!/bin/bash
/usr/bin/sudo.orig env PATH=$PATH "$@"
次に、通常の sudo は、非セキュアパス sudo と同じように機能します
Ubuntu バグ #192651 (「sudo パスが常にリセットされる」)
このバグの複製が最初に 2006 年 7 月に報告されたことを考えると、効果のない env_keep がどのくらいの期間運用されていたかはわかりません。上記のようなトリックをユーザーに強制することのメリットが何であれ、sudo と sudoers の man ページは、PATH を変更するオプションが事実上冗長であるという事実を反映する必要があります。
実際の実行を反映するようにドキュメントを変更することは、不安定にならず、非常に役立ちます。
Ubuntu バグ #226595 (「PATH を保持/指定できない」)
PATH に標準以外のバイナリ フォルダーを追加して sudo を実行できるようにする必要があります。要件を既に /etc/environment に追加していたので、sudo でコマンドを実行したときにコマンドが見つからないというエラーが表示されたときは驚きました.....
これを修正するために次のことを試みましたが、成功しませんでした。
" sudo -E
" オプションの使用 - 機能しませんでした。私の既存のPATHはまだsudoによってリセットされていました
/etc/sudoers でDefaults env_reset
" " を " " に変更しても機能しませんでした (sudo -E と組み合わせても)Defaults !env_reset
/etc/sudoers でのコメント解除env_reset
(" " など) も機能しませんでした。#Defaults env_reset
' Defaults env_keep += "PATH"
' を /etc/sudoers に追加しても機能しませんでした。
明らかに - man ドキュメントにもかかわらず - sudo は PATH に関して完全にハードコーディングされており、ユーザーの PATH を保持することに関して柔軟性がありません。sudo を使用してルート権限でデフォルト以外のソフトウェアを実行できないため、非常に面倒です。