sudoを使用しようとしていますが、ルートのPATHがkerblooeyに変更された場合はどうなりますか?

sudoを使用しようとしていますが、ルートのPATHがkerblooeyに変更された場合はどうなりますか?

このマシンに何か悪いことが起こったような気がします。

faheem@bulldog:/usr/local/src/mercurial$ sudo dpkg -i 
mercurial_3.0-1_amd64.deb mercurial-common_3.0-1_all.deb    
dpkg: warning: 'ldconfig' not found in PATH or not executable 
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable 
dpkg: error: 2 expected programs not found in PATH or not executable 
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin
and /sbin

これは維持されていない古い機械であり、しばらく使用しました。いつか死ぬとしましょう。今日はまさにその日になりそうです。少し早くエラーが発生し始め、誰かがちょうど再起動したようです。

アップデート:実行後

sudo -s

パス値を確認しました。

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games

sbinたとえば、とのような内容がここにありません/usr/sbin

アップデート2:

1人以上の未知の人が次の行を削除したことがわかりました/etc/sudoers

Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

説明してくれたAnthonyに感謝します。

答え1

出力の下部にある「注意:」でsudo dpkg -iわかるように、これは通常$PATH誤った設定が原因で発生します。これが発生する可能性のある1つの方法は、dpkg -iルートなしで実行する場合ですが、ここではそうではありません。

パスを確認する簡単な方法はrunを実行することですsudo -s。これはsudoに他のプログラムの代わりにシェルを実行するように指示します。したがって、ルートシェルプロンプトに入ります。これにより、見つかったり失われたりするecho "$PATH"ことがあります。/sbin/usr/sbin

sudoのデフォルトの動作は、ユーザー$PATH変数をそのままにすることです。このデフォルト値は通常、/etc/sudoers以下を含むDebianのdefaultによって変更されます。

Defaults        env_reset
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

この行を見逃した場合、secure_path問題が説明されます。

2つのオプションは、行を再追加するか(たとえば、追加の要素が含まれているため、ユーザーのパスを維持するために誰かがそれを削除した可能性がある)、ユーザーに追加する/optことです。/sbin:/usr/sbin$PATH

関連情報