Bash Completeはsudo secure_pathへの変更を無視します。

Bash Completeはsudo secure_pathへの変更を無視します。

ルートの$ PATH(およびsudoのsecure_path)に新しいパス(この場合は/usr/lib/cyrus/bin)を追加したいと思います。しかし、私はDebianを使用しています

まず、/etc/bash.bashrcを使用してルートの$ PATHに追加しました。これまではとてもよかったです。

# which cyr_expire
/usr/lib/cyrus/bin/cyr_expire
# cyr<Tab><Tab>
cyradm cyr_dbtool cyrdeliver cyr_deny cyr_df cyrdump cyr_expire cyr_info cyrmaster cyr_sequence cyrus cyr_userseen

Bash Completionはうまく機能します。

次に、/etc/sudoersにあるsudoのsecure_pathにこれを追加しました。

Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/cyrus/bin"

sudoが新しいディレクトリをうまく処理していることを確認してください。

$ sudo which cyr_expire
/usr/lib/cyrus/bin/cyr_expire

わかりました。

しかし、bashの完了は新しいディレクトリを考慮していないようです。

$ sudo cyr<Tab><Tab>
cyradm cyrdeliver cyrmaster cyrus 

Bash Completeは、sudoを介して呼び出すときに/usr/lib/cyrus/bin(cyr_dbtool、cyr_deny、cyr_expireなど)の下のバイナリを提案しません。

私が逃したものは何ですか?

ベストアンサー1

おすすめ記事