ルートとしてログインしようとすると、この警告が表示されます。
luvpreet@DHARI-Inspiron-3542:/$ Sudo su
Password:
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
私が「はい」と言った場合、それは単にログインし、私のシェルはbashからzshに変わります。
私がいいえと言った場合、それはncompinit: initialization aborted
とログインします。
ログイン後、シェルがzshに変わります。
私がzshに関連して行ったことは、githubからダウンロードoh-my-zshをダウンロードすることだけでした。
何が起こって、なぜですか?
使用-デルのUbuntu 16.04。
次の方法で、これらの安全でないフォルダを一覧表示できます。
compaudit
「安全でない」の根本的な原因は、これらのフォルダがグループ書き込み可能であることです。
それを修正するための1行のソリューションがあります。
compaudit | xargs chmod g-w
参考として、 zsh、Cygwin、および安全でないディレクトリ および zsh compinit:insecure directory を参照してください。
https://docs.npmjs.com/getting-started/fixing-npm-permissions を実行した後、同じ問題が発生しました。
% cd /usr/local/share/zsh
% Sudo chmod -R 755 ./site-functions
% Sudo chown -R root:root ./site-functions
私はここで答えを見つけました: https://stackoverflow.com/questions/13762280/zsh-compinit-insecure-directories
今朝、システムの一部のパッケージが更新され、このエラーメッセージが表示されました。
どうやら、アップデートで何かがユーザー名とグループをroot
ではなく数字に変更したようです:
# There are insecure files: /usr/share/zsh/vendor-completions/_code
# Sudo ls -alh
-rw-r--r-- 1 131 142 2.6K 2019-10-10 16:28 _code
このファイルのユーザーとグループをroot
に戻すだけで、問題はなくなりました。私はnot権限を変更する必要があり、問題の根本的な原因が理解されていない限り、そうすることに対して警告します。
Sudo chown root _code && Sudo chgrp root _code
切り替え後131
および142
root
に戻り、zshからのこのエラーメッセージは消えました。
私はWSLを使用していますが、上記の解決策では修正できませんでしたが、修正してこの呪文に導かれました。
cd ~
compaudit | xargs chown -R "$(whoami)"
compaudit | xargs chmod -R go-w
compaudit
を実行すると、oh-my-zsh
のプラグインディレクトリから安全でないディレクトリエラーが発生します。だから私はプラグインディレクトリの権限を変更しました:
cd /home/${usr}/.oh-my-zsh/custom/
Sudo chmod -R 755 ./plugins
私のために問題を修正しました。
WSL上のUbuntu 16.0.4。