विंडोज 8 में Cygwin का उपयोग करते हुए, chmod 600 उम्मीद के मुताबिक काम नहीं करता है?


75

मैं अपने कुंजी फ़ाइल की अनुमतियां बदलने के लिए कोशिश कर रहा हूँ key.pemमें Cygwin 1.7.11। इसकी अनुमति के झंडे हैं:-rw-rw----

chmod -c 600 key.pem

रिपोर्ट:

'key.pem' का मोड 0660 (rw-rw ----) से बदलकर 0600 (rw -------) कर दिया गया

हालाँकि:

ls -l key.pem 

अभी भी रिपोर्ट करता है

key.pem की अनुमति के झंडे अभी भी हैं: -rw-rw ----

यही कारण है कि मैं पूछ रहा हूँ कि ssh शिकायत कर रहा है:

'Key.pem' के लिए अनुमतियाँ 0660 बहुत खुली हैं।

जब मैं अपने Amazon EC2 उदाहरण में ssh करने की कोशिश करता हूं। क्या यह Cygwin & Windows 8 NTFS के साथ एक समस्या है या मैं कुछ याद कर रहा हूँ?


यह एक Win8 / Cygwin बग की तरह लगता है। मैं इसे सिगविन मेलिंग सूची पर रिपोर्ट करने की सलाह दूंगा
me_and 6:30

यह NTFS से संबंधित हो सकता है ... विंडोज वास्तव में उस लिनक्स योजना का उपयोग नहीं करता है। शायद आप खिड़कियों की अनुमति सेटिंग्स में जाने की कोशिश कर सकते हैं और केवल खुद को अधिकार दे सकते हैं ...
sinni800

मुझे लगता है कि इस से संबंधित है superuser.com/questions/363141/...
डैनियल Stiner

जवाबों:


97

मैं Win8CP में Cygwin का उपयोग कर रहा हूं, और मेरे पास एक ही मुद्दा था। यह निश्चित रूप से एक सिग्विन बग है, लेकिन एक वर्कअराउंड है: चलाने की कोशिश करें:

 chgrp -R Users ~/.ssh

लंबी व्याख्या यह है कि, किसी कारण से, Cygwin की पीढ़ी /etc/passwdऔर /etc/groupपीढ़ी उपयोगकर्ता के डिफ़ॉल्ट / मुख्य समूह के रूप में डाल रहे हैं None। और आप की अनुमति नहीं बदल सकते हैं None, इसलिए chmodसमूह के लिए कोई प्रभाव नहीं है।

मैंने स्वयं passwd/ groupफ़ाइलों की मरम्मत करने का प्रयास नहीं किया , लेकिन मैंने chgrp -R Users ~/.ssh(यदि आप विंडोज 8 पूर्व-रिलीज़ पर हैं, तो समूह नाम के साथ HomeUsers) एक (या, यदि आपने किया है )। उसके बाद, आप कर सकते हैं chmod 0600और यह उम्मीद के मुताबिक काम करेगा।

समूह में आप जो भी अन्य समान मामले पाते हैं, उनमें chgrpसे Usersकिया जा सकता है। यह अपेक्षा के अनुसार भी काम करता है क्योंकि सिग्विन Usersसमूह में उपयोगकर्ताओं को एक माध्यमिक समूह ( प्राथमिक के बजाय , जो सही व्यवहार होगा) के रूप में रखता है ।


12
मुझे chgrp की आवश्यकता है -Rv उपयोगकर्ता ~ / .ssh / * chmod -vR 600 ~ / .ssh / *
Tomáš Fejfar

@ TomášFejfar ऊपर टिप्पणी मेरे लिए काम किया। धन्यवाद।
स्कार्फोस

@ TomášFejfar जो बहुत मददगार था, हो सकता है कि उसे स्क्रिप्ट या कुछ और स्थापित करने का तरीका मिल जाए
दिलकश

4
ध्यान दें कि यदि आपके पास एक अन्य भाषा में स्थापित विंडोज Usersकाम करने वाला नहीं है। cat /etc/groupयह देखने के लिए उपयोग करें कि आपको क्या बदलना चाहिए Users। उदाहरण के लिए डच में आपको Usersसाथ बदलना होगा Gebruikers
तजसई १६'१४ को १६:

3
यह अब काम नहीं करता है। नया समाधान @ ल्यूक-ली का एक है।
fjardon

26

Cygwin 1.7.34 (2015-02-04) से शुरू होकर वह तरीका जो समूह को बदलकर Usersअब काम नहीं करता है। इसके बजाय आपको साइगविन की setfaclउपयोगिता का उपयोग करने की आवश्यकता है ।

  • कहो, यदि आप 644 (rw-r--r--)ऐसा करने के लिए फ़ाइल मोड सेट करना चाहते हैं :

    setfacl -s u::rw-,g::r--,o:r-- foo.bar
    
  • या एक लंबे प्रारूप का उपयोग करें:

    setfacl -s user::rw-,group::r--,other::r-- foo.bar
    
  • या getfaclफ़ाइल से इसका मोड कॉपी fooकरें bar:

    getfacl foo | setfacl -f - bar
    

एक पूर्ण मैनुअल साइगविन उपयोगकर्ता गाइड के "सेटफैक्ल" अनुभाग में है । मुझे आश्चर्य है कि साइगविन ने अभी तक chmodउपयोगिता को क्यों नहीं बदला है ।


1
उपयोगकर्ताओं को समूह परिवर्तन के साथ समाधान मेरे लिए काम नहीं किया, लेकिन केवल setfacl आधारित एक!
मंद

2
ल्यूक, मुझे लगता है कि आपने 'ओ' के बाद अपने पहले कोड-ब्लॉक में एक कॉलोन को याद किया।
SeldomNeedy

@SeldomNeedy अर्घ! आप सही हैं, उसके अनुसार सही किया गया है। धन्यवाद!
ल्यूक ली

1
@SeldomNeedy कुछ और जाँचों के बाद मुझे दोनों वाक्य रचनाएँ मिलीं, लेकिन मूल एक (एक कोलन के साथ) अधिक सटीक है। 'U' और 'g' के लिए दूसरा उपनिवेश UID और GID को निर्दिष्ट करने के लिए है। 'ओ' के लिए ऐसा कोई निर्दिष्ट नहीं है, इसलिए केवल एक बृहदान्त्र की जरूरत है।
ल्यूक ली

10

यहां एक स्क्रिप्ट है जो ल्यूक ली के सुझाव का उपयोग करती है, लेकिन ऑमडल आर्ग्स जैसे चामोद का समर्थन करती है। यह एक रूपरेखा प्रदान करता है जिसे बढ़ाया जा सकता है। हालाँकि यह वर्तमान में केवल ऑक्टल आर्ग को सपोर्ट करता है जो key.pem और / या ~ / .shsh डायरेक्टरी और फाइलों पर अनुमति को ठीक करने के लिए आवश्यक है।

#!/bin/bash

# convert chmod octal permission args to equivalent setfacl args
ARGS=() ; FILES=()
while [ $# -gt 0 ]; do
  A=$1 ; shift
  case "$A" in
  600|0600) ARGS+=("u::rw-,g::---,o::---") ;;
  640|0640) ARGS+=("u::rw-,g::r--,o::---") ;;
  644|0644) ARGS+=("u::rw-,g::r--,o::r--") ;;
  700|0700) ARGS+=("u::rwx,g::---,o::---") ;;
  *) if [ -e "$A" ]; then FILES+=( "$A" ) ; else
    echo "unrecognized arg [$A]" 1>&2
    exit 1
  fi
  ;;
  esac
done
for F in "${FILES[@]}" ; do
  setfacl -s "${ARGS[@]}" "$F"
done

मैंने इसे अपनी .ssh निर्देशिका और फ़ाइलों को ठीक करने के लिए इस तरह इस्तेमाल किया:

chmodfacl 700 ~/.ssh
chmodfacl 600 ~/.ssh/*
chmodfacl 640 ~/.ssh/*.pub

बस एक साइबर अपडेट में यह एक हिट हो गया। स्क्रिप्ट के लिए धन्यवाद। setfaclअपने आप ही भयानक है।
एंडी ब्राउन

मैं स्क्रिप्ट कहां रखूं?
सिसिर

स्क्रिप्ट आपके साइबर मार्ग में कहीं भी जा सकती है। आप एक $ HOME / बिन निर्देशिका बना सकते हैं और इसे वहां रख सकते हैं, हालाँकि आपको इसे $ $ HOME / .bashrc में अपने पथ में जोड़ने की आवश्यकता होगी।
फिलवॉक


1

यदि आपके पास git bash स्थापित है तो git bash केchmod -c 600 key.pem साथ एक ही कमांड ( ) चलाएं और Cygwin से बचें ।


1

इस समस्या को sg-keygen कमांड को cygwin टर्मिनल से चलाकर हल किया जा सकता है। (सामान्य विंडोज़ कमांड प्रॉम्प्ट नहीं)। मैंने अपनी windows8 मशीन में ऐसा किया है।


4
क्या आप कृपया आगे विस्तार से बता सकते हैं? यह समस्या को कैसे ठीक कर सकता है? उपयोगकर्ता को "सिगविन से रन एसश-कीजेन" के अलावा क्या कदम उठाने चाहिए?
DanteTheEgregore

यह सिर्फ एक कुंजी उत्पन्न करता है, लेकिन ओपी के पास खराब अनुमतियों के साथ एक कुंजी है
जोनाथन

यहाँ एक ही अनुभव: chmod / ssh-keygen cygwin के तहत अच्छी अनुमति देता है, लेकिन अगर मैं उन्हें विंडोज़ cmd से निष्पादित करता हूं तो यह नहीं करता है। (मैं नहीं जानता कि क्यों :-))
ऑट्र

-2

Cygwin इंस्टॉलर को चलाएं और अपडेट करें। बग को ठीक किया जाना चाहिए।


3
आपकी पोस्ट को विस्तारित करने की आवश्यकता है। एक अच्छे उत्तर में विशिष्ट निर्देश शामिल हैं (न केवल उनके लिंक) और एक स्पष्टीकरण के रूप में कि कैसे या क्यों उत्तर ओपी प्रश्न को संबोधित करता है। कृपया इन दोनों तत्वों को पर्याप्त रूप से संबोधित करने के लिए अपनी पोस्ट को संपादित करें।
Twisty Impersonator
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.