このバグはかなり前から存在しているようです!役立つと思われるいくつかのバグ参照を以下に示します(サブスクライブ/投票、ヒント、ヒント...):
Debianバグ#85123( "sudo:SECURE_PATHはまだオーバーライドできません")(2001年から!)
Bug#20996はこのバージョンのsudoにまだ存在しているようです。変更ログは、実行時に上書きされる可能性があると述べていますが、まだその方法を発見していません。
彼らはあなたの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に追加の非stdバイナリフォルダーを使用してsudoを実行できるようにする必要があります。/ etc / environmentにすでに要件を追加しているので、sudoでコマンドを実行すると、コマンドが見つからないというエラーが表示されて驚いた。
私は成功せずにこれを修正するために以下を試しました:
「sudo -E
」オプションの使用-機能しませんでした。私の既存のPATHはまだsudoによってリセットされました
/ etc / sudoersの「Defaults env_reset
」を「Defaults !env_reset
」に変更-機能しませんでした(sudo -Eと組み合わせた場合でも)
/ etc / sudoersのコメント解除env_reset
(例: " #Defaults env_reset
")-も機能しませんでした。
「追加Defaults env_keep += "PATH"
には/ etc / sudoersファイル」 -も仕事はしませんでした。
明らかに-manドキュメントにもかかわらず-sudoはPATHに関して完全にハードコーディングされており、ユーザーのPATHを保持することに関して柔軟性を与えません。sudoを使用してroot権限でデフォルト以外のソフトウェアを実行することはできないため、非常に迷惑です。