[zsh]zsh compinit: insecure directories, run compaudit for list.

TIPS

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

このメッセージが出る理由は、Zshの補完システム(compinit)が起動時に行っているセキュリティチェックにあります。

Zshは、補完用の設定ファイルが置かれているディレクトリ(fpathに含まれるディレクトリ)の中に、「自分以外のユーザー(またはグループ)が書き込み権限を持っている場所」がないかを調べます。もし他人が書き換えられる状態だと、悪意のあるスクリプトを仕込まれて実行されるリスクがあるため、警告を出して確認を求めているのです。

具体的に何が足りていないのか、そしてどう解決すべきかを解説します。

1. 原因を特定する

まずは、Zshが「安全ではない」と判断しているディレクトリを特定します。ターミナルで以下のコマンドを実行してください。

compaudit

実行すると、問題のあるディレクトリの一覧が表示されます。一般的には、Homebrewでインストールしたツールや、Zinitが管理しているディレクトリが表示されることが多いです。

2. 解決策(正攻法):権限を修正する

表示されたディレクトリの書き込み権限を、自分だけに絞ることで解決します。多くの場合は「グループ」への書き込み権限が付いていることが原因です。

以下のコマンドで、compaudit で見つかったディレクトリの権限を一括修正できます。

# compauditの結果をchmodに渡して、グループ・その他の書き込み権限を剥奪する
compaudit | xargs chmod g-w,o-w

※もし権限エラーが出る場合は、sudo を付けて実行してください。

3. 解決策(設定での回避):チェックを無視する

環境によっては(共有サーバーや特定のOS設定など)、権限を自由に変更できない場合があります。その際は、.zshrc 内の compinit の呼び出し方を変更することで、警告をスキップできます。

# 修正後(セキュリティチェックを無視して強制的に続行)
compinit -u

-u オプションを付けることで、「安全でないディレクトリがあっても黙って続行する(Ignore)」という意味になり、毎回の質問が出なくなります。

まとめ

  • 起きていること: Zshが「補完設定を誰かに書き換えられる恐れがある」と警告している。
  • やるべきこと: 理想は compaudit で出たディレクトリの権限を chmod で直すこと。
  • 手っ取り早い解決: .zshrccompinit-u を足す。

コメント

タイトルとURLをコピーしました