Windows 8에서 Cygwin을 사용하면 chmod 600이 예상대로 작동하지 않습니까? . 권한 플래그가

Cygwin 1.7.11의 키 파일 key.pem에 대한 권한을 변경하려고합니다 . 권한 플래그가 있습니다.-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의 문제입니까, 아니면 뭔가 빠졌습니까?



답변

Win8CP에서 Cygwin을 사용하고 있으며 동일한 문제가 있습니다. 분명히 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그룹의 사용자 를 기본 그룹 대신 보조 그룹 으로 지정하기 때문에 예상대로 작동 합니다. 이는 올바른 동작입니다.


답변

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
    

완전한 매뉴얼은 Cygwin 사용자 안내서“setfacl”섹션에 있습니다. Cygwin이 아직 chmod유틸리티를 변경하지 않은 이유가 궁금 합니다.


답변

다음은 Luke Lee의 제안을 사용하지만 chmod와 같은 8 진 인수를 지원하는 스크립트입니다. 확장 할 수있는 프레임 워크를 제공합니다. 현재는 key.pem 및 / 또는 ~ / .ssh 디렉토리 및 파일에 대한 권한을 수정하는 데 필요한 8 진 인수 만 지원합니다.

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


답변

chgrp -R Users ~/.ssh

chmod 0600 ~/.ssh/config

chmod 0700 ~/.ssh


답변

git bash가 설치되어 있다면 git bash 와 동일한 명령 ( chmod -c 600 key.pem)을 실행하고 Cygwin을 피하십시오 .


답변

cygwin 터미널에서 ssh-keygen 명령을 실행하면이 문제를 해결할 수 있습니다 (일반 Windows 명령 프롬프트 아님). 내 Windows8 컴퓨터 에서이 작업을 수행했습니다.


답변

Cygwin 설치 프로그램을 실행하고 업데이트하십시오. 버그를 수정해야합니다.