Was bedeutet es und wie kann ich es beheben?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
Das Ausführen von compaudit
gibt Folgendes zurück:
There are insecure directories:
/usr/local/share/zsh/site-functions
Das hat es für mich behoben:
$ cd /usr/local/share/zsh
$ Sudo chmod -R 755 ./site-functions
Kredit: ein Beitrag auf zsh Mailing-Liste
EDIT: Wie von @biocyberman in den Kommentaren ausgeführt. Möglicherweise müssen Sie auch den Eigentümer von site-functions
Aktualisieren:
$ Sudo chown -R root:root ./site-functions
Auf meinem Computer (OSX 10.9) muss ich dies nicht tun, sondern YMMV.
EDIT2: Unter OSX 10.11 funktionierte nur Folgendes:
$ cd /usr/local/share/
$ Sudo chmod -R 755 zsh
$ Sudo chown -R root:staff zsh
Außerdem ist user: staff die richtige Standardberechtigung unter OSX.
compaudit | xargs chmod g-w
wird den Trick machen, siehe http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/
Die meisten Antworten werden mit einer Lösung geliefert, ohne jedoch zu erwähnen, warum diese Warnung auftritt. Hier ist ein Auszug aus ZSH's compinit :
Aus Sicherheitsgründen prüft compinit auch, ob das Vervollständigungssystem Dateien verwendet, die weder root noch dem aktuellen Benutzer gehören oder Dateien in Verzeichnissen, die von der Welt, einer Gruppe oder einer anderen beschreibbar sind gehören nicht root oder dem aktuellen Benutzer. Wenn solche Dateien oder Verzeichnisse gefunden werden, fragt compinit, ob das Vervollständigungssystem wirklich verwendet werden soll. Um diese Tests zu vermeiden und sicherzustellen, dass alle gefundenen Dateien ohne Rückfrage verwendet werden, verwenden Sie die Option -u, und damit compinit alle unsicheren Dateien und Verzeichnisse unbemerkt ignoriert, verwenden Sie die Option -i. Diese Sicherheitsüberprüfung wird vollständig übersprungen, wenn die Option -C angegeben ist.
Daher impliziert die Lösung die Korrektur eines (oder aller) der folgenden Punkte:
festlegen des aktuellen Benutzers als Eigentümer aller Verzeichnisse/Unterverzeichnisse/Dateien in Ursache:
compaudit | xargs chown -R "$(whoami)"
schreibrechte für Gruppe/andere für die Dateien in Ursache entfernen:
compaudit | xargs chmod go-w
Ein anderer Ansatz wäre, diese Prüfungen mit zu überspringen
compinit -u
aber ich schlage dies nicht wirklich vor, da das Verstecken von Problemen unter einem Teppich Probleme nur kurzfristig löst.
Ich habe die gleichen Warnungen erhalten, als ich Sudo -i
Beim Starten einer Root-Shell hat die @ chakrit-Lösung bei mir nicht funktioniert.
Aber ich fand -u
Schalter von compinit
funktioniert, z. in Ihrer .zshrc/zshenv oder wo Sie compinit
aufgerufen haben
compinit -u
NB: Nicht für Produktionssysteme empfohlen
Siehe auch http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization
Die akzeptierte Antwort hat bei mir auf macOs Sierra (10.12.1) nicht funktioniert. Musste es rekursiv aus/usr/local machen
cd /usr/local
Sudo chown -R <your-username>:<your-group-name> *
Hinweis: Sie können Ihren Benutzernamen mit whoami
und Ihre Gruppe mit id -g
Auf macOS Sierra muss folgendes ausgeführt werden: Sudo chown -R $(whoami):staff /usr/local
Diese beiden Zeilen haben für mich behoben.
Sudo chown -R _user_:root /usr/local/share/zsh
Sudo chown -R _user_:root /usr/local/share/zsh/*
auf Mojave hat dies den Trick getan: Sudo chmod g-w /usr/local/share
Ich habe es dadurch behoben
Sudo chown root:staff -R /usr/local/share/zsh
in meinem Fall sind anderen Verzeichnissen in share/ebenfalls "staff" -Gruppen zugewiesen
Dies funktioniert für meinen Mac nach dem Update auf High Sierra.
Entfernen Sie den globalen Schreibzugriff:
Sudo chmod g-w /usr/local/share/zsh/site-functions
Sudo chmod g-w /usr/local/share/zsh