سؤال باستخدام Cygwin في ويندوز 8 ، لا يعمل chmod 600 كما هو متوقع؟


أحاول تغيير الأذونات إلى ملف المفتاح الخاص بي key.pem في سيغوين 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 يشكو:

أذونات 0660 ل 'key.pem' مفتوحة للغاية.

عندما أحاول ssh في بلدي مثيل أمازون EC2. هل هذه مشكلة مع Cygwin & Windows 8 NTFS أو هل أفتقد شيئًا ما؟


75
2018-03-05 22:27


الأصل


هذا يبدو وكأنه خطأ Win8 / Cygwin. أنا أوصي الإبلاغ عن ذلك على قائمة البريد Cygwin. - me_and
قد تكون ذات صلة بـ NTFS ... لا يستخدم Windows نظام Linux هذا بالفعل. ربما يمكنك محاولة الدخول إلى إعدادات إذن النوافذ وتعطي نفسك فقط الحقوق ... - sinni800
أعتقد أن هذا مرتبط superuser.com/questions/363141/... - Daniel Stiner


الأجوبة:


أنا باستخدام Cygwin في Win8CP ، وكان لي نفس المشكلة. إنها بالتأكيد حشرة Cygwin ، ولكن هناك حل بديل: حاول تشغيل:

 chgrp -R Users ~/.ssh

التفسير الأطول هو ، لسبب ما ، Cygwin /etc/passwd و /etc/group الجيل يضع المجموعة الافتراضية / الرئيسية للمستخدم None. ولا يمكنك تغيير إذن من None، لذلك chmod للمجموعة ليس لها أي تأثير.

لم أحاول إصلاح passwd/group ملفات نفسي ، لكنني فعلت chgrp -R Users ~/.ssh (أو إذا كنت تستخدم الإصدار التجريبي من Windows 8 مع اسم المجموعةHomeUsers). بعد ذلك ، يمكنك القيام به chmod 0600 وستعمل كما هو متوقع.

ال chgrp الى Users المجموعة يمكن أن يتم في أي الحالات المماثلة الأخرى التي تجدها. حتى يعمل كما هو متوقع منذ يضع Cygwin المستخدمين في Users مجموعة ك ثانوي مجموعة (بدلا من ابتدائي، والتي من شأنها أن تكون السلوك الصحيح).


97
2018-04-03 18:58



كنت بحاجة إلى chgrp -Rv Users ~ / .ssh / * chmod -vR 600 ~ / .ssh / * - Tomáš Fejfar
@ TomášFejfar التعليق أعلاه عملت بالنسبة لي. شكر. - scaraveos
@ TomášFejfar التي كانت مفيدة للغاية ، ربما يجب أن تجد طريقها إلى تثبيت البرامج النصية أو شيء من هذا - dashesy
لاحظ إذا كان لديك Windows مثبتًا بلغة أخرى Users لن تنجح. استعمال cat /etc/group للتحقق مما يجب استبداله Users. في اللغة الهولندية على سبيل المثال ، سيكون عليك استبدالها Users مع Gebruikers. - thijsai
لم يعد يعمل. الحل الجديد هو @ لوقا لي واحد. - fjardon


بدءا من Cygwin 1.7.34 (2015-02-04) الطريقة التي تغير المجموعة إلى Users لم يعد يعمل. بدلا من ذلك تحتاج إلى استخدام Cygwin 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
    

دليل كامل في قسم "setfacl" من دليل مستخدم Cygwin. أتساءل لماذا لم يتغير Cygwin بعد chmod فائدة بالمثل.


26
2018-02-12 02:19



حلول مع مجموعة التغيير لم يعمل المستخدمون بالنسبة لي ولكن فقط على أساس setfacl! - dim
لوقا ، أعتقد أنك أخطأت القولون في أول كتلة برمجية بعد "o". - SeldomNeedy
SeldomNeedy Argh! أنت على حق ، وتصحيحها وفقا لذلك. شكر! - Luke Lee
SeldomNeedy بعد بعض الشيكات أكثر وجدت كل بناء جملة يعمل ، ولكن واحد الأصلي (مع القولون واحد) هو أكثر دقة. إن النقطتين الثانيتين لـ "u" و "g" هي لتحديد UID و GID. بالنسبة إلى "o" ، لا يوجد محدد من هذا القبيل ، لذلك هناك حاجة لقولون واحد فقط. - Luke Lee


هنا هو السيناريو الذي يستخدم اقتراح لوقا لي ولكن يدعم المجامع الثماني مثل chmod. ويوفر إطارا يمكن تمديده. على الرغم من أنه يدعم حاليًا فقط الثوابت الثمانية اللازمة لإصلاح الإذن على key.pem و / أو ~ / .ssh دليل وملفات.

#!/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

10
2018-02-14 15:57



فقط حصلت على ضرب هذا واحد في تحديث cygwin. شكرا على السيناريو. setfacl من تلقاء نفسها مروعة. - Andy Brown
أين أضع النص؟ - Sisir
يمكن للبرنامج النصي الذهاب إلى أي مكان في مسار cygwin الخاص بك. يمكنك إنشاء دليل HOME / bin $ ووضعه هناك ، على الرغم من أنك ستحتاج بعد ذلك إلى إضافته إلى المسار ، على سبيل المثال ، في $ HOME / .bashrc. - philwalk


chgrp -R Users ~/.ssh

chmod 0600 ~/.ssh/config

chmod 0700 ~/.ssh

4
2018-05-26 17:36



هذه هي الخطوات الدقيقة التي أحتاجها ، +1. - camomileCase


اذا كنت تمتلك باش تثبيت تشغيل نفس الأمر (chmod -c 600 key.pemمع ghost باش وتجنب سيغوين.


1
2018-04-26 15:15





يمكن حل هذه المشكلة عن طريق تشغيل الأمر ssh-keygen من طرف cygwin. (ليس موجه الأوامر العادي Windows). لقد فعلت هذا في جهاز windows8 الخاص بي.


1
2017-08-08 14:59



هل يمكن أن توضح من فضلك؟ كيف يمكن لهذا أن يحل المشكلة؟ ما الخطوات التي يجب على المستخدم اتخاذها بخلاف "تشغيل ssh-keygen من Cygwin"؟ - DanteTheEgregore
هذا فقط يولد مفتاح ، ولكن البروتوكول الاختياري لديه مفتاح مع أذونات سيئة - Jonathan
نفس التجربة هنا: يضع chmod / ssh-keygen إذنًا جيدًا تحت cygwin ، ولكن لا يفعل ذلك إذا قمت بتنفيذها من windows cmd. (أنا لا أعرف لماذا على الرغم من :-)) - autra


قم بتشغيل مثبت Cygwin وتحديثه. يجب إصلاح الخطأ.


-2
2018-06-15 17:52



رسالتك يجب أن يتم توسيعها. جيد إجابة تتضمن تعليمات محددة (وليس فقط روابط لها) وشرحًا حول كيفية أو لماذا تتناول الإجابة سؤال OP. يرجى تعديل المشاركة لتتناول كلاً من هذين العنصرين بشكل كافٍ. - Twisty Impersonator