zsh compinit: güvensiz dizinler


238

Ne anlama geliyor ve nasıl düzeltebilirim?

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

İade çalıştırılması compauditaşağıdaki gibidir:

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

2
Bu uyarının neden oluştuğunu bilen var mı?
Blaszard

3
@Blaszard'ın geçerli soruyu sorduktan bir yıl sonra (yorum olarak), 'linkyndy' soruyu aşağıda yanıtladı (cevap olarak).
Happy Green Kid Naps

Yanıtlar:


342

Bu benim için düzeltti:

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

Kredi: zsh posta listesinde bir yazı


EDIT: @biocyberman tarafından belirtildiği gibi yorumlarda. Ayrıca sahibini de güncellemeniz gerekebilir site-functions:

$ sudo chown -R root:root ./site-functions

Makinemde (OSX 10.9) bunu yapmam gerekmiyor, YMMV.

EDIT2: OSX 10.11'de yalnızca bu işe yaradı:

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

Ayrıca kullanıcı: personel OSX'te doğru varsayılan izindir.



2
@kirill_igum "root yok" ile "root erişimi yok " mu demek istediniz ? Öyleyse, dosyaları erişiminiz olan bir klasöre kopyalamanız, yeni klasörünüzü düzeltmeniz .zshenvve .zshrckullanmanız ve yeni klasörde klasörle paylaştığım şekilde aynı işlemi yapmanız gerekir chmod.
chakrit

@kirill_igum bağlandığım posta listesi mesajına bakın.
chakrit

1
Ben sahibi kök ayarladıktan sonra yazma erişimi grup ve diğer için iptal edilmesi gerektiğini fark ettim. Ben modifiye chmodetmek komutu sudo chmod -R go-w zsh.
gdvd

1
Not: Ben de sembolik vardı /usr/local/share/zsh/site-functionsetmek /usr/local/Cellarve zorundaydı chown -R root:staff /usr/local/Cellarbu çalıştı önce de.
mVChr

265

6
Budur! Gruplamak için yazma izninin kaldırılması. Teşekkürler
glarrain

8
Çok daha iyi cevap, bu compauditgibi problemleri teşhis etmek ve düzeltmek için kullanılabileceğine dikkat edilmelidir .
Wolph

7
Ayrıca dosyaların sahibi kök değiştirmek için de gerekebilir - Ben zorunda:compaudit | xargs chown root
Brad Parks

4
Bu kesinlikle benim için en iyi çözüm. Homebrew ile zsh ve zsh-completions yükledim, bu yüzden açıkça root'a ait olmak istemedi.
katy lavallee

2
compaudit | xargs chmod g-wBirlikte de ompaudit | xargs chown rootbenim için çalıştı ve HomeBrew mutlu tutmak için ortaya çıktı. biri neler olduğunu biraz daha açıklayabilir mi?
nyxee

76

Çoğu yanıt bir çözümle birlikte gelir, ancak bu uyarının neden oluştuğunu belirtmez. İşte ZSH'nin derlemesinden bir alıntı :

Tamamlama sistemi kullanmak istiyorsunuz eğer güvenlik için nedenleri de çekleri compinit değil root tarafından veya geçerli kullanıcının sahip olduğu dosyaların veya dünya veya grup yazılabilir veya root tarafından veya geçerli kullanıcının sahip olduğu olmadığını olan dizinleri dosyaları . Bu tür dosyalar veya dizinler bulunursa, compinit tamamlama sisteminin gerçekten kullanılıp kullanılmayacağını soracaktır. Bu sınamalardan kaçınmak ve bulunan tüm dosyaların sorulmadan kullanılmasını sağlamak için -u seçeneğini kullanın ve compinit'in tüm güvensiz dosyaları ve dizinleri sessizce yoksaymasını sağlamak için -i seçeneğini kullanın. -C seçeneği verildiğinde bu güvenlik kontrolü tamamen atlanır.

Bu nedenle, çözüm aşağıdakilerden birini (veya tümünü) sabitlemeyi gerektirir:

  • geçerli kullanıcıyı neden olan tüm dizinlerin / alt dizinlerin / dosyaların sahibi olarak ayarlama:

    compaudit | xargs chown -R "$(whoami)"
    
  • neden olan dosyalar için grup / diğerleri için yazma izinlerinin kaldırılması:

    compaudit | xargs chmod go-w
    

Başka bir yaklaşım, bu kontrolleri kullanarak

compinit -u

ama bunu gerçekten önermiyorum, çünkü bir halının altındaki sorunları gizlemek sadece kısa vadede problemleri çözer.


1
Teşekkürler. İnsanların, sorunu gerçekten anlamadan rastgele komutlar yazmaları beni şaşırttı.
shriek

3
Çok kullanıcılı bir sisteme ne dersiniz? Böyle bir senaryoda, chown -R "$(whoami)"giriş dizini dışındaki dosyalar için /usr/local/çalışmaz. Dokümanlara göre, dosyaların kök sahip olması daha anlamlı olmaz mıydı?
goetzc

Bu cevabı en çok beğendim. Bunun neden başıma geldiğini düşündürdü. Kullanıcının ana grubuna başka bir kullanıcı ekledikten sonra olduğu ortaya çıktı. $ HOME / .antigen / bundles altındaki dizinler kullanıcı ve grubuma aitti. Benim durumumda bu kullanıcıyı gruptan kaldırmak sorunu çözdü.
Samuel

25

sudo -iBir kök kabuğuna başlarken aynı uyarıları aldım , @ chakrit'in çözümü benim için işe yaramadı.

Ama işlerin -uanahtarını buldum compinit, örneğin .zshrc / zshenv'inizde veya aradığınız yerdecompinit

compinit -u

Not: Üretim sistemi için önerilmez

Ayrıca bkz http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Başlatma


benim için çalışan tek çözüm buydu. ben windows 10 linux alt sistemi üzerinde compinit ile zsh kullanmaya çalışıyordu
denns

16

Bu, High Sierra'ya güncelledikten sonra Mac'im için işe yarar.

Grup yazma erişimini kaldırın:

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

Değişikliği zsh dizinleriyle sınırlı tutmak en iyisidir.


1
sudo chmod gw / usr / local / share / zsh / site-fonksiyonları (mac 10.15'te benim için çalıştı)
shijin

1
Bu benim için Mac Catalina üzerinde çalışan tek düzeltme oldu
user8467470

Bu düzeltme benim için MacOS Catalina'da da işe yaradı. Teşekkürler!
Tyler

12

Kabul edilen cevap macOs Sierra'da işe yaramadı (10.12.1). / Usr / local konumundan yinelemeli yapmak zorunda kaldım

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

Not: Kullanıcı adınızı whoamive grubunuzuid -g


4
Çok kullanıcılı bir sistemde doğru kullanıcı / grup kök olmalı olsa da, Sierra üzerinde de bu şekilde yaptım t: personel
Marshall Eubanks

5

Bu iki çizgi benim için düzeltildi.

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

sudo chown -R _user_:root /usr/local/share/zsh/*

3
Benim için çalış! Bilgisayarımda bir ağ hesabı kullanıyorum - Ubutun 16.04 sudo chown -R $(whoami):root /usr/local/share/zsh sudo chown -R $(whoami):root /usr/local/share/zsh/*
hoangdv

5

MacOS Sierra'da şunları çalıştırmanız gerekir: sudo chown -R $(whoami):staff /usr/local


4

Yaparak düzelttim

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

benim durumumda hisse içindeki diğer dizinler / ayrıca "personel" grubu atanmış


Soru, yardım merkezinde tanımlandığı gibi Yığın Taşması için konu ile ilgili değildir . Lütfen bu tür soruları cevaplamayın; bunun yerine, dikkat çekmek için işaretlemelisiniz ve uygun şekilde kapatılacak veya taşınacaklar.
Toby Speight

4

Mojave'de bu hile yaptı: sudo chmod go-w /usr/local/share


1
Daha da sudo chmod -R go-w /usr/local/share
iyisi

3

Benim önerim compaudit çalıştırmak ve sonra sadece denetim tarafından bulunan dizinlerde izinleri düzeltmek olacaktır. Tanımlanan dizinlerin grup veya diğerleri için yazma izinlerine sahip olmadığından emin olun.



3

Makinem:

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

İşte yaptığım şey,

  1. çalıştırın compauditve size güvensiz olduğunu düşündüğü dizinlerin bir listesini verecektir.

  2. çalıştırın sudo chmod -R 755 target_directory (örnek: sudo chmod -R 755 /usr/local/share/zsh)

xmaple:

compaudit

İadeler:

/ Usr / local / share / zsh

bu yüzden koşuyorum

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

buradan daha fazla bilgi link


2

Bu sabah, sistemimdeki bazı paketler güncellendi ve beni bu hata mesajıyla bıraktı. Ubuntu 18.04 kullanıyorum.

Görünüşe göre, güncellemedeki bir şey kullanıcı adını ve grubu şu şekilde değil sayılarla değiştirdi 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

Ben sadece bu dosya için kullanıcı ve grup değiştirildi rootve sorun gitti. Herhangi bir izni değiştirmem gerekmedi ve sorunun altında yatan neden anlaşılmadıkça bunu yapmamaya dikkat ediyorum.

sudo chown root _code && sudo chgrp root _code

Geçtikten sonra 131ve 142geri root, zsh bu hata mesajı gitti.


2
  1. çalıştırın compauditve size güvensiz olduğunu düşündüğü dizinlerin bir listesini verecektir.

  2. sudo chown -R username:root target_directory

  3. sudo chmod -R 755 target_directory


2

Catalina için de aynı uyarıyı yaptım. Kolay bir çözüm, bunu .zshrc'nizin üstüne koymaktır

ZSH_DISABLE_COMPFIX=true


1

Bu komutu çalıştırmak benim için çalıştı mac OS Catalina:

compaudit | xargs chmod g-w,o-w


1

MAC OS X çözümü:

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

Ayrıca "user: staff = OSX'te varsayılan kök kullanıcı.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.