zsh compinit: unsichere Verzeichnisse


237

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]?

Wenn Sie das compauditausführen, wird Folgendes zurückgegeben:

There are insecure directories:
/usr/local/share/zsh/site-functions

2
Weiß jemand, warum diese Warnung auftritt?
Blaszard

3
Ein Jahr nachdem @Blaszard die gültige Frage gestellt hatte (als Kommentar), beantwortete 'linkyndy' sie unten (als Antwort).
Happy Green Kid Nickerchen

Antworten:


341

Das hat es für mich behoben:

$ cd /usr/local/share/zsh
$ sudo chmod -R 755 ./site-functions

Kredit: ein Beitrag auf zsh Mailingliste


EDIT: Wie von @biocyberman in den Kommentaren hervorgehoben. Möglicherweise müssen Sie auch den Eigentümer von aktualisieren site-functions:

$ 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 dies:

$ cd /usr/local/share/
$ sudo chmod -R 755 zsh
$ sudo chown -R root:staff zsh

Auch user: staff ist die korrekte Standardberechtigung unter OSX.


1
Was ist, wenn Sie keine Wurzel haben
kirill_igum

2
@kirill_igum mit "no root" meintest du "no root access "? Wenn ja, sollten Sie die Dateien in einen Ordner kopieren, auf den Sie Zugriff haben, Ihren .zshenvund .zshrcden neuen Ordner reparieren und dasselbe chmodfür den neuen Ordner tun, den ich mit dem Ordner gepostet habe.
Chakrit

@kirill_igum siehe die Mailinglisten-Nachricht, mit der ich verlinkt habe.
Chakrit

1
Ich bemerkte, dass nach dem Festlegen des Besitzers auf root der Schreibzugriff sowohl für die Gruppe als auch für andere Personen widerrufen werden musste. Ich habe den chmodBefehl in geändert sudo chmod -R go-w zsh.
GDVD

1
Hinweis: Ich hatte Symlinks /usr/local/share/zsh/site-functionszu /usr/local/Cellarund musste chown -R root:staff /usr/local/Cellarauch, bevor dies funktionierte.
MVChr

261
compaudit | xargs chmod g-w

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


6
Das ist es! Entfernen der Schreibberechtigung für die Gruppe. Danke
Glarrain

8
Weitaus bessere Antwort, es sollte beachtet werden, dass compauditverwendet werden kann, um Probleme wie diese zu diagnostizieren und sie zu beheben.
Wolph

7
Beachten Sie, dass Sie möglicherweise auch den Eigentümer der Dateien in root ändern müssen - ich musste:compaudit | xargs chown root
Brad Parks

4
Dies ist definitiv die beste Lösung für mich. Ich habe zsh und zsh-vervollständigungen mit Homebrew installiert, wollte es also offensichtlich nicht so ändern, dass es Root gehört.
Katy Lavallee

2
compaudit | xargs chmod g-wzusammen mit ompaudit | xargs chown rootarbeitete auch für mich und schien HomeBrew glücklich zu machen. kann jemand erklären, was ein bisschen mehr los ist.
Nyxee

76

Die meisten Antworten enthalten eine Lösung, erwähnen jedoch nicht, warum diese Warnung auftritt. Hier ist ein Auszug aus ZSHs Compinit :

Aus Sicherheitsgründen prüft compinit auch, ob das Vervollständigungssystem Dateien verwenden würde, die nicht Root oder dem aktuellen Benutzer gehören , oder Dateien in Verzeichnissen, die weltweit oder in Gruppen beschreibbar sind oder die nicht Root oder dem aktuellen Benutzer gehören . Wenn solche Dateien oder Verzeichnisse gefunden werden, fragt compinit, ob das Vervollständigungssystem wirklich verwendet werden soll. Um diese Tests zu vermeiden und dafür zu sorgen, dass alle gefundenen Dateien ohne Aufforderung verwendet werden, verwenden Sie die Option -u. Um zu verhindern, dass compinit alle unsicheren Dateien und Verzeichnisse stillschweigend ignoriert, verwenden Sie die Option -i. Diese Sicherheitsüberprüfung wird vollständig übersprungen, wenn die Option -C angegeben wird.

Daher impliziert die Lösung die Behebung eines (oder aller) der folgenden Punkte:

  • Festlegen des aktuellen Benutzers als Eigentümer aller Verzeichnisse / Unterverzeichnisse / Dateien in Ursache:

    compaudit | xargs chown -R "$(whoami)"
    
  • Entfernen von Schreibberechtigungen für Gruppen / andere für die Dateien in Ursache:

    compaudit | xargs chmod go-w
    

Ein anderer Ansatz wäre, diese Überprüfungen mithilfe von zu überspringen

compinit -u

Aber ich schlage dies nicht wirklich vor, da das Verstecken von Problemen unter einem Teppich Probleme nur kurzfristig löst.


1
Vielen Dank. Ich bin erstaunt, dass Leute zufällig Befehle eingeben, ohne das Problem tatsächlich zu verstehen.
Schrei

3
Was ist mit einem Mehrbenutzersystem? In einem solchen Szenario funktionieren chown -R "$(whoami)"Dateien außerhalb des /usr/local/Ausgangsverzeichnisses nicht. Wäre es laut den Dokumenten nicht sinnvoller, die Dateien im Root-Besitz zu halten?
Goetzc

Diese Antwort gefällt mir am besten. Ich musste darüber nachdenken, warum mir das passiert ist. Es stellte sich heraus, dass dies passiert ist, nachdem ein anderer Benutzer zur Hauptgruppe meines Benutzers hinzugefügt wurde. Die Verzeichnisse unter $ HOME / .antigen / bundles gehörten meinem Benutzer und meiner Gruppe. In meinem Fall hat das Entfernen dieses Benutzers aus der Gruppe das Problem behoben.
Samuel

25

Ich habe die gleichen Warnungen erhalten, als ich sudo -ieine Root-Shell gestartet habe. Die Lösung von @ chakrit hat bei mir nicht funktioniert.

Aber ich habe einen -uWechsel der compinitWerke gefunden, z. B. in Ihrer .zshrc / zshenv oder wo Sie angerufen habencompinit

compinit -u

NB: Nicht für das Produktionssystem empfohlen

Siehe auch http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization


Das war die einzige Lösung, die für mich funktioniert hat. Ich habe versucht, zsh mit compinit auf Linux-Subsystem unter Windows 10 zu verwenden
denns

13

Dies funktioniert für meinen Mac nach dem Update auf High Sierra.

Entfernen Sie den Gruppenschreibzugriff:

sudo chmod g-w /usr/local/share/zsh/site-functions
sudo chmod g-w /usr/local/share/zsh

Es ist am besten, die Änderung auf den Umfang der zsh-Verzeichnisse zu beschränken.


1
sudo chmod gw / usr / local / share / zsh / site-Funktionen (arbeitete für mich in Mac 10.15)
Shijin

Dies war das einzige
Update

12

Die akzeptierte Antwort hat bei macOs Sierra (10.12.1) bei mir nicht funktioniert. Musste es rekursiv von / usr / local machen

cd /usr/local
sudo chown -R <your-username>:<your-group-name> *

Hinweis: Sie können Ihren Benutzernamen mit whoamiund Ihre Gruppe mit erhaltenid -g


4
Ich musste es auch in Sierra nicht so machen, obwohl auf einem Mehrbenutzersystem der richtige Benutzer / die richtige Gruppe root sein sollte: staff
Marshall Eubanks

5

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
Arbeite für mich! Ich benutze ein Netzwerkkonto auf meinem PC - Ubutun 16.04 sudo chown -R $(whoami):root /usr/local/share/zsh sudo chown -R $(whoami):root /usr/local/share/zsh/*
hoangdv

5

Unter macOS Sierra müssen Sie Folgendes ausführen: sudo chown -R $(whoami):staff /usr/local


4

Ich habe es dadurch behoben

sudo chown root:staff -R /usr/local/share/zsh

In meinem Fall haben andere Verzeichnisse in share / auch die Gruppe "staff" zugewiesen


Die Frage ist nicht zum Thema für Stapelüberlauf, wie in der Hilfe definiert . Bitte beantworten Sie solche Fragen nicht. Stattdessen sollten Sie sie zur Beachtung markieren, damit sie geschlossen oder entsprechend migriert werden.
Toby Speight

4

auf Mojave hat dies den Trick getan: sudo chmod go-w /usr/local/share


1
Besser noch:sudo chmod -R go-w /usr/local/share
Ecmanaut

3

Mein Vorschlag wäre, compaudit auszuführen und dann nur die Berechtigungen für die vom Audit gefundenen Verzeichnisse zu korrigieren. Stellen Sie sicher, dass die identifizierten Verzeichnisse keine Schreibberechtigungen für Gruppen oder andere haben.



3

Meine Maschine:

System Version: macOS 10.15.4 (19E287)
Kernel Version: Darwin 19.4.0

Also hier ist was ich getan habe,

  1. run compauditund es gibt Ihnen eine Liste der Verzeichnisse, die es für unsicher hält.

  2. ausgeführt sudo chmod -R 755 target_directory (Beispiel sudo chmod -R 755 /usr/local/share/zsh)

Beispiel:

compaudit

kehrt zurück:

/ usr / local / share / zsh

also renne ich

sudo chmod -R 755 /usr/local/share/zsh

Lesen Sie hier mehr Link


2

Heute Morgen wurden einige Pakete in meinem System aktualisiert und ich habe diese Fehlermeldung erhalten. Ich benutze Ubuntu 18.04.

Anscheinend hat etwas im Update den Benutzernamen und die Gruppe in Zahlen geändert, anstatt rootwie folgt:

# 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

Ich habe einfach den Benutzer und die Gruppe für diese Datei wieder geändert rootund das Problem ist behoben. Ich habe nicht brauchen , um alle Berechtigungen zu ändern, und warnt vor dabei , wenn die zugrunde liegende Ursache des Problems zu verstehen ist.

sudo chown root _code && sudo chgrp root _code

Nach dem Umschalten 131und 142zurück zu rootging diese Fehlermeldung von zsh weg.


2
  1. run compauditund es gibt Ihnen eine Liste von Verzeichnissen, die es für unsicher hält

  2. sudo chown -R username:root target_directory

  3. sudo chmod -R 755 target_directory


2

Ich hatte in letzter Zeit die gleiche Warnung auf Catalina. Eine einfache Problemumgehung besteht darin, dies oben in Ihrem .zshrc zu platzieren

ZSH_DISABLE_COMPFIX=true


1

Das Ausführen dieses Befehls funktionierte für mich auf meinem mac OS Catalina:

compaudit | xargs chmod g-w,o-w


1

MAC OS X-Lösung:

$ sudo chmod -R 755 /usr/local/share/zsh
$ sudo chown -R root:staff /usr/local/share/zsh

Auch "user: staff = Standard-Root-Benutzer unter OSX.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.