それはどういう意味ですか、どうすれば修正できますか?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
compaudit
を実行すると、次が返されます。
There are insecure directories:
/usr/local/share/zsh/site-functions
これは私のためにそれを修正しました:
$ cd /usr/local/share/zsh
$ Sudo chmod -R 755 ./site-functions
クレジット: zshメーリングリストへの投稿
EDIT:@biocybermanがコメントで指摘したとおり。 site-functions
の所有者も更新する必要がある場合があります。
$ Sudo chown -R root:root ./site-functions
私のマシン(OSX 10.9)では、これを行う必要はありませんが、YMMVです。
EDIT2:OSX 10.11では、これのみが機能しました:
$ cd /usr/local/share/
$ Sudo chmod -R 755 zsh
$ Sudo chown -R root:staff zsh
また、user:staffはOSXの正しいデフォルト許可です。
compaudit | xargs chmod g-w
http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/ を参照してください。
ほとんどの回答には解決策がありますが、この警告が発生する理由については触れません。 ZSHの compinit からの抜粋を次に示します。
セキュリティ上の理由から、compinitは、完了システムがルートまたは現在のユーザーが所有していないファイル、またはワールドまたはグループで書き込み可能なディレクトリ内のファイル、またはルートまたは現在のユーザーが所有していないファイル。そのようなファイルまたはディレクトリが見つかった場合、compinitは補完システムを実際に使用するかどうかを尋ねます。これらのテストを回避し、確認せずにすべてのファイルが使用されるようにするには、オプション-uを使用し、compinitがすべての安全でないファイルとディレクトリをサイレントに無視するには、オプション-iを使用します。 -Cオプションを指定すると、このセキュリティチェックは完全にスキップされます。
したがって、解決策は、次のいずれか(またはすべて)を修正することを意味します。
現在のユーザーをすべてのディレクトリ/サブディレクトリ/ファイルの所有者として設定します:
compaudit | xargs chown -R "$(whoami)"
原因のファイルのグループ/その他の書き込み権限を削除します:
compaudit | xargs chmod go-w
別のアプローチは、以下を使用してこれらのチェックをスキップすることです
compinit -u
しかし、問題を敷物の下に隠すことは短期的には問題を解決するだけなので、私はこれを本当に提案しません。
ルートシェルをSudo -i
起動したときに同じ警告が表示されましたが、@ chakritのソリューションはうまくいきませんでした。
しかし、compinit
の-u
スイッチが機能することを発見しました。 .zshrc/zshenvまたはcompinit
を呼び出した場所
compinit -u
NB:実動システムには推奨されません
http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization も参照してください。
MacOs Sierra(10.12.1)では、受け入れられた答えがうまくいきませんでした。/usr/localから再帰的に実行する必要がありました
cd /usr/local
Sudo chown -R <your-username>:<your-group-name> *
注:whoami
でユーザー名を取得し、id -g
でグループを取得できます
MacOS Sierraでは、次を実行する必要があります:Sudo chown -R $(whoami):staff /usr/local
これらの2行は修正されました。
Sudo chown -R _user_:root /usr/local/share/zsh
Sudo chown -R _user_:root /usr/local/share/zsh/*
mojaveで、これはトリックを行いました:Sudo chmod g-w /usr/local/share
して修正しました
Sudo chown root:staff -R /usr/local/share/zsh
私の場合、share /内の他のディレクトリにも「スタッフ」グループが割り当てられています
これはHigh Sierraにアップデートした後、私のMacで機能します。
グローバル書き込みアクセスを削除します。
Sudo chmod g-w /usr/local/share/zsh/site-functions
Sudo chmod g-w /usr/local/share/zsh