zsh संकलित: असुरक्षित निर्देशिका


238

इसका क्या मतलब है और मैं इसे कैसे ठीक कर सकता हूं?

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

compauditरिटर्न को निम्न प्रकार से चलाना :

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

2
किसी को पता है कि यह चेतावनी क्यों होती है?

3
@Blaszard ने वैध प्रश्न (एक टिप्पणी के रूप में) के एक साल बाद, 'linkyndy' ने इसका उत्तर नीचे दिया (उत्तर के रूप में)।
हैप्पी ग्रीन किड नेप्स

जवाबों:


342

यह मेरे लिए यह तय:

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

क्रेडिट: zsh मेलिंग सूची पर एक पोस्ट


संपादित करें: जैसा कि @Bocyberman ने टिप्पणियों में बताया है। आपको मालिक को भी अपडेट करना पड़ सकता है site-functions:

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

मेरी मशीन (OSX 10.9) पर, मुझे ऐसा करने की आवश्यकता नहीं है लेकिन YMMV।

EDIT2: OSX 10.11 पर, केवल इसने काम किया:

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

इसके अलावा उपयोगकर्ता: कर्मचारी OSX पर सही डिफ़ॉल्ट अनुमति है।


1
क्या होगा अगर आपके पास कोई रूट नहीं है
kirill_igum

2
@kirill_igum "नहीं रूट" से क्या आपका मतलब "नो रूट एक्सेस " है? यदि ऐसा है, तो आपको फ़ाइलों को उस फ़ोल्डर में कॉपी करना चाहिए जिस तक आपकी पहुंच हो, अपने फ़ोल्डर को ठीक करें .zshenvऔर .zshrcनए फ़ोल्डर का उपयोग करें और नए फ़ोल्डर chmodपर भी ऐसा ही करें जैसा कि मैंने फ़ोल्डर के साथ पोस्ट किया है।
चक्रित

@kirill_igum मेरे द्वारा लिंक किए गए मेलिंग सूची संदेश को देखें।
चरक

1
मैंने देखा कि स्वामी को रूट करने के बाद, समूह और अन्य दोनों के लिए निरस्त होने के लिए आवश्यक पहुँच लिखें। मैंने chmodआदेश को संशोधित किया sudo chmod -R go-w zsh
gdvd

1
नोट: मैं में सिमलिंक था /usr/local/share/zsh/site-functionsकरने के लिए /usr/local/Cellarऔर करना पड़ा chown -R root:staff /usr/local/Cellarभी करने से पहले इस काम किया।
mVChr

264
compaudit | xargs chmod g-w

चाल करेंगे, http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/ देखें


6
यह बात है! समूह को लिखित अनुमति को हटाना। धन्यवाद
glarrain

8
बेहतर जवाब, यह ध्यान दिया जाना चाहिए कि compauditइन जैसी समस्याओं का निदान करने के साथ-साथ उन्हें ठीक भी किया जा सकता है।
वोल्फ

7
ध्यान दें कि आपको फ़ाइलों के स्वामी को रूट करने के लिए भी बदलना पड़ सकता है - मुझे यह करना था:compaudit | xargs chown root
ब्रैड पार्क्स

4
यह निश्चित रूप से मेरे लिए सबसे अच्छा समाधान है। मैंने होमब्रे के साथ zsh और zsh- कम्पनों को स्थापित किया, इसलिए स्पष्ट रूप से इसे रूट के स्वामित्व में बदलना नहीं चाहता था।
१०

2
compaudit | xargs chmod g-wसाथ में ompaudit | xargs chown rootमेरे लिए भी काम किया और होमब्री को खुश रखने के लिए दिखाई दिया। क्या कोई समझा सकता है कि व्हाट्सएप कुछ ज्यादा चल रहा है।
nyxee

76

अधिकांश उत्तर एक समाधान के साथ आते हैं, लेकिन यह उल्लेख नहीं करते हैं कि यह चेतावनी क्यों होती है। यहाँ ZSH के संकलन से एक अंश है :

सुरक्षा कारणों से यह भी जांचा जाता है कि क्या पूरा सिस्टम रूट या वर्तमान उपयोगकर्ता के स्वामित्व वाली फाइलों का उपयोग नहीं करेगा , या निर्देशिकाओं में फाइलें जो विश्व- या समूह-लेखन योग्य हैं या जो रूट या वर्तमान उपयोगकर्ता के स्वामित्व में नहीं हैं । यदि ऐसी फाइलें या निर्देशिकाएं पाई जाती हैं, तो कंपिनिट पूछेगा कि क्या पूर्णता प्रणाली का वास्तव में उपयोग किया जाना चाहिए। इन परीक्षणों से बचने के लिए और पाए जाने वाली सभी फ़ाइलों को बिना पूछे उपयोग किया जा सकता है, विकल्प -u का उपयोग करें, और यह सुनिश्चित करने के लिए चुपचाप सभी असुरक्षित फ़ाइलों की उपेक्षा करें और निर्देशिका विकल्प -i का उपयोग करें। -C विकल्प दिए जाने पर यह सुरक्षा जांच पूरी तरह से छोड़ दी जाती है।

इसलिए, समाधान निम्नलिखित में से एक (या सभी) को ठीक करने का अर्थ है:

  • वर्तमान उपयोगकर्ता को सभी निर्देशिकाओं / उपनिर्देशिकाओं / फ़ाइलों के स्वामी के रूप में सेट करना:

    compaudit | xargs chown -R "$(whoami)"
    
  • समूह / अन्य लोगों के लिए लिखित अनुमतियाँ हटाने के कारण:

    compaudit | xargs chmod go-w
    

एक और तरीका यह होगा कि इन चेक को इस्तेमाल करके छोड़ दिया जाए

compinit -u

लेकिन मैं वास्तव में यह सुझाव नहीं देता, क्योंकि एक गलीचा के नीचे समस्याओं को छुपाने से अल्पावधि में ही समस्याएं हल हो जाती हैं।


1
धन्यवाद। मुझे आश्चर्य है कि लोग बेतरतीब ढंग से कमांड डब्ल्यू / ओ वास्तव में समस्या को समझेंगे।
shriek

3
एक बहु-उपयोगकर्ता प्रणाली के बारे में क्या? ऐसे परिदृश्य में, chown -R "$(whoami)"होम डाइरेक्टरी के बाहर की फाइलें जैसे /usr/local/काम नहीं करेंगी। डॉक्स के अनुसार, क्या फाइलों को जड़-स्वामित्व वाला बनाने के लिए यह अधिक समझ में नहीं आएगा?
गोएत्ज़क

मुझे यह उत्तर सबसे अच्छा लगता है। मुझे इस बारे में सोचना चाहिए कि मेरे साथ ऐसा क्यों हुआ। मेरे उपयोगकर्ता के मुख्य समूह में किसी अन्य उपयोगकर्ता को जोड़ने के बाद ऐसा हुआ। $ HOME / .antigen / बंडलों के तहत निर्देशिका मेरे उपयोगकर्ता और मेरे समूह के स्वामित्व में थी। तो मेरे मामले में समूह से उस उपयोगकर्ता को हटाने से समस्या हल हो गई।
सैमुअल 13

25

जब मुझे चेतावनी मिली तो मैंने वही किया sudo -iरूट शेल शुरू करने , @ चक्रित का समाधान मेरे लिए कारगर नहीं था।

लेकिन मुझे आपके .zshrc / zshenv या जहाँ आपने कॉल किया, जैसे काम के -uस्विच मिलेcompinitcompinit

compinit -u

NB: उत्पादन प्रणाली के लिए अनुशंसित नहीं

यह भी देखें http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization


यह एकमात्र ऐसा सौतन था जिसने मेरे लिए काम किया। मैं खिड़कियों पर लिनक्स सबसिस्टम पर compinit के साथ zsh का उपयोग करने की कोशिश कर रहा था 10
denns

15

यह हाई सिएरा के अपडेट के बाद मेरे मैक के लिए काम करता है।

समूह लेखन पहुंच निकालें:

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

यह परिवर्तन zsh निर्देशिका तक सीमित रखने के लिए सबसे अच्छा है।


1
sudo chmod gw / usr / local / share / zsh / साइट-फ़ंक्शंस (मैक 10.15 में मेरे लिए काम किया)
shijin

1
यह एकमात्र फिक्स था जिसने मैक कैटालिना पर मेरे लिए काम किया
user8467470

इस फिक्स ने मेरे लिए MacOS Catalina पर भी काम किया। धन्यवाद!
टायलर

12

स्वीकृत जवाब मेरे लिए macOs Sierra (10.12.1) पर काम नहीं किया। इसे / usr / स्थानीय से पुनरावर्ती करना पड़ा

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

नोट: आप अपना उपयोगकर्ता नाम whoamiऔर अपने समूह के साथ प्राप्त कर सकते हैंid -g


4
मैंने इसे सियरा पर भी इस तरह से नहीं किया था, हालांकि एक बहुउद्देशीय प्रणाली पर सही उपयोगकर्ता / समूह को रूट होना चाहिए: कर्मचारी
मार्शल Eubanks

5

ये दो पंक्तियाँ मेरे लिए तय की हैं।

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

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

3
मेरे लिए काम! मैं अपने पीसी पर एक नेटवर्क खाते का उपयोग करता हूं - Ubutun 16.04 sudo chown -R $(whoami):root /usr/local/share/zsh sudo chown -R $(whoami):root /usr/local/share/zsh/*
hoangdv

5

MacOS सिएरा पर आपको चलाने की आवश्यकता है: sudo chown -R $(whoami):staff /usr/local


4

मैंने इसे करके तय किया

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

मेरे मामले में शेयर के अंदर अन्य निर्देशिकाओं को भी "स्टाफ" समूह सौंपा गया है


सहायता केंद्र में परिभाषित स्टैक ओवरफ्लो के लिए प्रश्न ऑन-टॉपिक नहीं है । कृपया ऐसे प्रश्नों का उत्तर न दें; इसके बजाय, आपको उन्हें ध्यान के लिए ध्वजांकित करना चाहिए और उन्हें उचित रूप से बंद या माइग्रेट किया जाएगा।
टोबे स्पीट


3

मेरा सुझाव यह होगा कि मैं कंपाउडिट चलाऊं और फिर ऑडिट द्वारा प्राप्त निर्देशिकाओं पर अनुमति तय करूं। सुनिश्चित करें कि पहचानी गई निर्देशिकाओं में समूह या अन्य के लिए लिखने की अनुमति नहीं है।



3

मेरी मशीन:

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

तो मैंने यह किया,

  1. चलाएं compauditऔर यह आपको निर्देशिकाओं की एक सूची देगा जो यह सोचते हैं कि असुरक्षित हैं।

  2. चलाने sudo chmod -R 755 target_directory (उदाहरण: sudo chmod -R 755 /usr/local/share/zsh)

उदाहरण के:

compaudit

रिटर्न:

/ Usr / स्थानीय / शेयर / zsh

इसलिए मैं दौड़ता हूं

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

और लिंक यहाँ पढ़ें


2

आज सुबह, मेरे सिस्टम के कुछ पैकेज अपडेट हुए, और मुझे इस त्रुटि संदेश के साथ छोड़ दिया। मैं Ubuntu 18.04 का उपयोग कर रहा हूं।

जाहिर है, अपडेट में कुछ ने इसके बजाय उपयोगकर्ता नाम और समूह को संख्या में बदल दिया 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और समस्या चली गई। मुझे किसी भी अनुमति को बदलने की आवश्यकता नहीं थी, और जब तक समस्या के अंतर्निहित कारण को नहीं समझा जाता, ऐसा करने के खिलाफ सावधानी बरतेंगे।

sudo chown root _code && sudo chgrp root _code

स्विच करने 131और 142वापस करने के बाद root, zsh का यह त्रुटि संदेश चला गया।


2
  1. चलाएं compauditऔर यह आपको उन निर्देशिकाओं की एक सूची देगा जो यह सोचते हैं कि असुरक्षित हैं

  2. sudo chown -R username:root target_directory

  3. sudo chmod -R 755 target_directory


2

कैटालिना पर हाल ही में मेरी भी यही चेतावनी थी। एक आसान समाधान यह है कि इसे अपने .zshrc के शीर्ष पर रखें

ZSH_DISABLE_COMPFIX=true

1

सूचीबद्ध समाधानों में से कोई भी मेरे लिए काम नहीं किया। इसके बजाय, मैंने होमब्रेव को अनइंस्टॉल करना और पुनः स्थापित करना समाप्त कर दिया, जिसने चाल चली। स्थापना रद्द करने के निर्देश यहां मिल सकते हैं: http://osxdaily.com/2018/08/12/how-uninstall-homebrew-mac/



1

मैक ओएस एक्स समाधान:

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

इसके अलावा "उपयोगकर्ता: कर्मचारी = OSX पर डिफ़ॉल्ट रूट उपयोगकर्ता।


0

google-cloud-sdkस्थापित स्क्रिप्ट चलाने के बाद मुझे यह मुद्दा मिला , जो एक प्रविष्टि के माध्यम से शेल में कमांड-पूर्णता जोड़ता है .zshrc

बाद zsh में पूर्ण करने विन्यस्त करने के लिए Homebrew के निर्देशों मददगार था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.