wake-up-neo.com

zsh compinit: unsichere Verzeichnisse

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
170
Alex

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.

251
chakrit
compaudit | xargs chmod g-w

wird den Trick machen, siehe http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/

177
Wenbing Li

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.

43
linkyndy

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

20
number5

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

7
Franco

Auf macOS Sierra muss folgendes ausgeführt werden: Sudo chown -R $(whoami):staff /usr/local

4
kkodev

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/*
3
arglee

auf Mojave hat dies den Trick getan: Sudo chmod g-w /usr/local/share

1
Sebastien H.

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

0
Franck

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
0
Hank Chan