विंडोज 10 के लिए उबंटू बैश पर फ़ाइल अनुमतियां बदलने में असमर्थ


12

मैं एक ssh उदाहरण का उपयोग करने की कोशिश कर रहा था और मैंने इस त्रुटि को दूर किया:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for 'privkey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "privkey.pem": bad permissions
Permission denied (publickey).

जो विषम हो। मैंने 'chmod' कमांड का उपयोग करके अनुमति को बदलने की कोशिश की, लेकिन वह काम नहीं करता था। बैश ने यह धारणा दी कि कमांड पंजीकृत है, लेकिन मैंने कुंजी की अनुमतियों की जांच की और यह अभी भी 777 पर था। मैंने अपनी गिट बैश खोली और मैं बिना किसी समस्या के अपने उदाहरण में ssh करने में सक्षम था, और अनुमतियाँ 777 के रूप में नहीं थीं। कुंआ।


1
तो कौन सा अपडेट ? यदि आप इसे वापस रोल करते हैं तो क्या होता है?
DavidPostill

1
इस के समान superuser.com/q/1321072/726810
Biswapriyo

जवाबों:


24

यदि आप Windows फ़ाइल सिस्टम में फ़ाइलों को संदर्भित कर रहे हैं, तो वे डिफ़ॉल्ट रूप से, लिनक्स अनुमतियों को बनाए नहीं रखते हैं। हालाँकि, इसे सक्षम करने का एक तरीका है। संपादित करें या बनाएं (उपयोग करके sudo) /etc/wsl.confऔर निम्नलिखित जोड़ें:

[automount]
options = "metadata"

सभी WSL इंस्टेंसेस को शट डाउन करें और एक इंस्टेंस को पुनरारंभ करें, और chmodअब कोई भी परिवर्तन बरकरार है।


5
यह बिल्कुल सही जवाब है!
kontinuity

1
मेरे लिए काम नहीं करता है। जैसा आपने सुझाव दिया, मैंने वैसा ही किया, लेकिन chmodअभी भी अनुमति का उपयोग करते समय प्रतिबिंबित नहीं होता है ls -al। अजीब तरह से पर्याप्त (और यह इस परिवर्तन को करने से पहले भी मामला था), कुछ chmodमान काम करते हैं जबकि अन्य नहीं करते हैं। उदाहरण के लिए, 0600 का कोई प्रभाव नहीं है, लेकिन 0400 इसे -r-xr-xr-x में बदल देता है।
ऐश

@Ash सुनिश्चित करें कि आपकी WSL अनुमतियाँ Windows की अनुमति के विपरीत नहीं हैं। उदाहरण के लिए, यदि आप Windows में केवल पढ़ने के लिए एक फ़ाइल चिह्नित करते हैं, तो यह WSL में लिखने योग्य नहीं होगा, क्योंकि Windows अनुमतियाँ WSD अनुमतियों से अधिक हो जाती हैं।
nilskp

@nilskp फ़ाइल को Windows के अंतर्गत Readonly के रूप में चिह्नित नहीं किया गया है और इसके लिए Windows अनुमतियाँ सिस्टम, व्यवस्थापक और उपयोगकर्ता के लिए पूर्ण नियंत्रण हैं। यदि विंडोज अनुमतियाँ अधिक हो जाती हैं, तो उस विवरण के अनुसार, इसका यह अर्थ नहीं है कि chmodWSL के माध्यम से किया गया कोई भी अवलोकन नहीं किया जाएगा?
ऐश

@Ash, optionsतुलसी A के उत्तर पर एक नज़र डालें । यह संभव है कि आपको उन मास्क में से एक या दोनों की आवश्यकता हो। मैं इस मुद्दे को हल करने के लिए पर्याप्त नहीं जानता।
nilskp

10

क्या आपके विंडोज फाइलसिस्टम (अंडर / मेन्ट /) पर निजी कुंजी है? आप विंडोज पर उबंटू पर बैश पर चामोद का उपयोग करके विंडोज के फाइल सिस्टम पर फाइलों की अनुमति को संशोधित नहीं कर सकते। आपको अपने WSL होम डायरेक्टरी (~) में निजी कुंजी को कॉपी करना होगा और वहां करना होगा।

कुछ चर्चा यहां: https://github.com/Microsoft/WSL/issues/81


4
उस चर्चा में कम से कम 3 पृष्ठ हैं। आपको वास्तव में उस जानकारी को उद्धृत करना चाहिए जो आपको लगता है कि लेखक के लिए प्रासंगिक है।
रामहाउंड

1
बात यह थी कि पूरी तरह से, मैं किसी भी समस्या के साथ अपने उदाहरण में ssh करने में सक्षम था। यह केवल आज ही शुरू हुआ
iii

1
@iii तो हाल ही में क्या बदला? क्या आपने कोई विंडोज़ अपडेट स्थापित किया है? क्या आपने कोई कॉन्फिग फाइल बदली है? कृपया अपना प्रश्न संपादित करें और अपडेट करें।
DavidPostill

1
@iii - कौन सा अपडेट? आपका प्रश्न उस तथ्य का कोई संदर्भ नहीं देता है जो पहले काम कर रहा था। आपका प्रश्न भी कोई संदर्भ नहीं देता है कि आपने हाल ही में एक अद्यतन स्थापित किया है। मैं इस जवाब से असहमत हूं, क्योंकि लिंक डब्ल्यूएसएल के संशोधित होने से पहले से है (मेरा मानना ​​है), यह समर्थन करने के लिए कि आप क्या करने की कोशिश कर रहे हैं। यही कारण है कि मैं इस लेखक के बारे में विस्तृत जवाब देने के लिए दबाव डाल रहा था
रामहाउंड

3
@ रामहाउंड, उस चर्चा से संबंधित जानकारी मेरे उत्तर में विरोधाभास है, मैंने सिर्फ एक संदर्भ स्रोत के रूप में उस लिंक को जोड़ा है। प्रासंगिक जानकारी वहां पहले उत्तर में है। मुझे नहीं पता था कि प्रश्नकर्ता को केवल विंडोज अपडेट के बाद इस समस्या का सामना करना पड़ा, लेकिन उन्होंने यह नहीं कहा कि क्या कुंजी विंडोज फाइलसिस्टम पर है, इसलिए मुझे अभी भी लगता है कि जब तक वे अन्यथा संकेत नहीं देते तब तक सबसे अधिक संभावना है।
एरोबर्टेक

9

इसे संभालने का सही तरीका:

  1. /etc/wsl.confनिम्नलिखित नामक एक फाइल बनाएं और उसे संपादित करें:
    [automount]
    enabled = true
    root = /mnt/
    options = "metadata,umask=22,fmask=11"

उपरोक्त प्रत्येक पैरामीटर के अर्थ को समझने के लिए, कृपया इस लेख को msdn: https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/ पर देखें।

  1. सभी खुले WSL टर्मिनल को बंद करें और फिर एक नया खोलें।

अब आप सभी सेट हैं, / mnt / c / से विंडोज़ में एक फ़ाइल की अनुमतियों को बदलते हुए WSL "मेटाडेटा" सुविधा के माध्यम से लिनक्स सबसिस्टम पर सही ढंग से परिलक्षित होगा।

WSL कॉन्फ़िगरेशन हमेशा WSL ​​के स्टार्टअप पर सही ढंग से माउंट होगा।


2
मेरे लिए काम नहीं करता है। जैसा आपने सुझाव दिया, मैंने वैसा ही किया, लेकिन chmodअभी भी अनुमति का उपयोग करते समय प्रतिबिंबित नहीं होता है ls -al। अजीब तरह से पर्याप्त (और यह इस परिवर्तन को करने से पहले भी मामला था), कुछ chmodमान काम करते हैं जबकि अन्य नहीं करते हैं। उदाहरण के लिए, 0600 का कोई प्रभाव नहीं है, लेकिन 0400 इसे -r-xr-xr-x में बदल देता है।
ऐश

fmask को 111 पर सेट किया जाना चाहिए। devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements
अरुणप्रसाद राजकुमार

यह जवाब मेरे लिए अच्छा है। @ArunprasadRajkumar, fmask 111 नहीं होना चाहिए - इसका उपयोग करने से डिफ़ॉल्ट रूप से सभी फ़ाइलों से निष्पादन योग्य ध्वज हटा दिया जाता है (जो लेख में उल्लेख किया गया है कि आप लिंक करते हैं) और संभवतः वह नहीं है जो आप चाहते हैं। fmask=11डिफ़ॉल्ट रूप से फ़ाइल सिस्टम से निष्पादन योग्य झंडे का उपयोग करना इसलिए अच्छा काम करता है।
zelanix

मेरी पिछली टिप्पणी को स्पष्ट करने के fmask=111लिए, स्वामी, समूह और अनाम उपयोगकर्ताओं के लिए सभी फ़ाइलों के निष्पादन अधिकार हटा दिए गए हैं। fmask=11केवल स्वामी के लिए फ़ाइल सिस्टम से निष्पादन अधिकार का उपयोग करते समय, समूह और अनाम उपयोगकर्ताओं के लिए निष्पादन अधिकार हटाता है (यह शायद वही है जो आप चाहते हैं, और अच्छी तरह से काम करता है)। umask=22समूह और अनाम उपयोगकर्ताओं के लिए फ़ाइलों और निर्देशिकाओं से राइट्स हटाता है।
zelanix

-1

लिनक्स सब सिस्टम में कुंजी फ़ाइल को कहीं भी कॉपी करें फिर अनुमति बदलें और कनेक्ट करें।

cp /mnt/path/to/key/file /home/$USER/

chmod 400 /home/$USER/key_file_name.pem

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