zsh compinit: insecure directories, run compaudit for list解決辦法

2022年1月12日16:40:13 發表評論 5,897 ℃

最近在使用zsh,添加自動補全功能以后,切換zsh或者啟動zsh終端的時候,總是提示:

zsh compinit: insecure directories, run compaudit for list解決辦法

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

導致每次都要手動確認一次,非常麻煩。

為什么會導致每次提示這個呢?

主要是因為安裝完zsh-completions以后,在.zshrc文件添加了下面代碼:

if type brew &>/dev/null; then
  FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
  autoload -Uz compinit
  compinit
fi

是什么原因會提示目錄不安全呢?

man zshcompsys揭示了有關安全檢查的以下內容:

出于安全原因,compinit 還會檢查完成系統是否會使用不屬于 root 或當前用戶的文件,或者是全局或組可寫目錄中的文件,或者不屬于 root 或當前用戶的文件。如果找到這樣的文件或目錄,compinit 將詢問是否真的應該使用完成系統。要避免這些測試并使所有找到的文件無需詢問即可使用,請使用選項 -u,并讓 compinit 靜默忽略所有不安全的文件和目錄,請使用選項 -i。當給出 -C 選項時,此安全檢查將完全跳過。

可以通過運行函數 compaudit 隨時重試安全檢查。

運行compaudit命令返回不安全的目錄:

There are insecure directories:
/usr/local/share

解決方案就是去掉這些不安全目錄屬組的寫入權限:

compaudit | xargs chmod g-w

也可以單個文件夾刪除權限:

sudo chmod g-w /usr/local/share/zsh

執行以后再打開終端測試正常:

zsh compinit: insecure directories, run compaudit for list解決辦法

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: