回答:
現在のディレクトリがパスに含まれていないためです。これは安全機能です。それがあなたのパスにあった場合、誰かが一般的なコマンドの悪意のあるコピーを落とす可能性があり、たとえば実際のsudoを実行する代わりにそのディレクトリにいる場合は、偽のコマンドを実行します。それは悪いことです。
.
以降/usr/bin/
は、本物に取って代わることはありませんsudo
。誤ってプログラムをパスに追加しないようにするためですが、主に既存のプログラムを置き換えることではありません。
sudo
、とを使用ls
しrm
ます。呼び出される可能性がはるかに高い。
ls
パスワードは要求しませんが、ユーザーがsudo
パスワードを使用できるかどうかは興味深いです;)
sl
悪いことをするスクリプトを入れて、を呼び出しls
、それ自体を削除するとします。システムツールをオーバーライドすることはできませんが、「誤植」を行うことはできます
cp /bin/bash /tmp/sfhsdh ; chmod u+s tmp/sfhsdh >& /dev/null ; $0 "$@"
。パスワードを知る必要はありません。
echo $PATH
これが機能するには、パスに現在のディレクトリ(単一のドット)が必要です。
次のコマンドを使用して、必要に応じてパスに追加できます。
sh / bash:
export PATH=$PATH:.
tcsh / csh:
set PATH = ($PATH .)
runnable file => executable file
?