Ipad

Oh My Zsh「安全でない補完依存ディレクトリが検出されました」を修正

Oh My Zsh「安全でない補完依存ディレクトリが検出されました」を修正

ああ、私のZshの安全でない補完依存ディレクトリメッセージ

Oh My Zshを最近インストールした、またはOh My Zshを実行しているMacをアップデートした場合、新しいターミナルウィンドウを起動すると大きなエラーメッセージ画面が表示されることがあります。このエラーは通常、「安全でない補完依存ディレクトリが検出されました」という内容で、zshが安全でないと判断したパーミッションを持つ/usr/local/share/zsh/ディレクトリがいくつか表示されます。

この問題に対処するには 2 つの選択肢があります。1 つは問題のディレクトリに対するユーザー権限を調整することであり、もう 1 つは安全でないディレクトリの検証チェックを無効にすることです。

オプション1: 指定されたディレクトリの権限を変更する

パーミッションを変更する一つの方法は、chmod 755を使用することです。これは、所有者(あなた)には完全なパーミッションを与え、他のユーザーには対象のディレクトリの読み取りと実行のパーミッションを与えます。例えば、以下のようになります。

chmod 755 /usr/local/share/zsh

chmod 755 /usr/local/share/zsh/site-functions

もちろん、自分にとってより適切な他の権限オプションを使用することもできますが、755 を使用すると、Oh My Zsh の安全でないディレクトリの問題が解決されるはずです。

(ちなみに、ほとんどのセットアップでは、これらのディレクトリのデフォルトの権限は rwxrwxr-x に対して 775 になっています。何らかの理由で元に戻したい場合は、この設定を行ってください)。

オプション2: 安全でないディレクトリのチェックを無効にする

権限を変更せずに、安全でないディレクトリ検証を削除したい場合 (基本的にチェックを無視するだけで、潜在的なセキュリティ問題は解決されません)、次のコードを .zshrc ファイルに追加できます。

ZSH_DISABLE_COMPFIX=true

nano を使用すると、これを .zshrc ファイルまたは選択したテキスト エディターに追加する簡単な方法になります。

zshrcを変更する

繰り返しますが、これによって権限に関する問題は解決されず、指定されたディレクトリの権限のチェックが停止されるだけです。

多くのユーザーにとって、/usr/local/share/zsh/ をすべてのユーザーアカウントからアクセス可能にしておくことは、Mac 上のすべてのユーザーアカウントが Oh My Zsh を利用できるようにするために望ましいことです。しかし、共有ユーザーマシンでより制限の厳しい環境を望むユーザーのために、権限を変更することもできます。選択はあなた次第です。

エラーメッセージの全文は以下のとおりです。これは問題の解決方法を大まかに示していますが、必ずしもすぐに解決策を見つけられるほど簡潔に書かれているわけではありません。それでも、Oh My Zshが説明している選択肢と、セキュリティメッセージを消すための各オプションの結果を理解するために、読んで確認する価値はあります。

[oh-my-zsh] 安全でない補完依存ディレクトリが検出されました:
drwxrwxr-x 3 user admin 96 Jun 29 2020 /usr/local/share/zsh
drwxrwxr-x 5 user admin 160 Jul 19 14:54 /usr/local/share/zsh/site-functions


[oh-my-zsh] 安全のため、 [oh-my-zsh] 権限と所有権を修正して zsh を再起動するまで、これらのディレクトリからの補完はロードされません。
[oh-my-zsh] グループまたはその他の書き込み権限を持つディレクトリについては、上記のリストを参照してください。

[oh-my-zsh] 権限を修正するには、
[oh-my-zsh] 「グループ」と「その他」の書き込み権限を無効にし、
[oh-my-zsh] これらのディレクトリの所有者が root または現在のユーザーであることを確認してください。
[oh-my-zsh] 次のコマンドが役立つ場合があります:
[oh-my-zsh] compaudit | xargs chmod gw,ow

[oh-my-zsh] 上記の方法が役に立たない場合、または
[oh-my-zsh] 安全でないディレクトリの検証をスキップしたい場合
は、zshrc ファイルで oh-my-zsh がソースされる前に、変数 ZSH_DISABLE_COMPFIX を [oh-my-zsh] “true” に設定できます。

この問題を解決する別の方法がある場合は、コメント欄でお気軽に共有してください。