zsh-<tab>のバイナリパスを完全に展開する


10

私の現在のzsh動作では、「sudo」と入力した後でタブを押すと、スペースが追加されるだけです。

$ sudo ...

私が本当に望んでいるのは、タブを押したときに実行しようとしているバイナリのパスにタブを完全に拡張して、何が実行されるかを確認できるようにすることです。

$ /usr/bin/sudo ...

目的は、私のマシンのローカルユーザーがハッキングされ、$PATH変数にエントリが追加され、'sudo'が悪意のあるプログラムを実行するケースから保護することです。これにより、ルートに簡単にエスカレーションされます。


タブの再バインドを含まない別の解決策があります。コマンド名を先頭に付加し、コマンドの=後にタブを押すと、コマンド名が完全パスに展開されます。
Mischa Arefiev 2013

回答:


7

bindkey組み込みコマンドを使用して、次のようにキーをZshコマンドにバインドします。

bindkey "^I" expand-cmd-path 

どこ"^I"ですかTab。この行を~/.zshrcファイルにドロップするだけです。警告:引数のオートコンプリートが壊れます。


乾杯!明らかにこれは理想的なソリューションではないので、代わりにCtrl-Oにバインドしました。ただし、パスワード入力を取得するバイナリ(sudo、ssh、gpgなど)は多くないので、これらのいずれかを使用しているときはいつでもCtrl-Oを押すだけで満足です。私のアカウントへのアクセス権を持つ誰もが.zshrcまたはxmonad.hsを介してそれを覆すことができるので、問題全体を解決するわけではありませんが、私にいくつかの方法を提供します!
アリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.