Windows 8에서 Cygwin을 사용하면 chmod 600이 예상대로 작동하지 않습니까?


75

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의 문제입니까, 아니면 뭔가 빠졌습니까?


이것은 Win8 / Cygwin 버그처럼 들립니다. Cygwin 메일 링리스트 에보고하는 것이 좋습니다 .
me_and

NTFS와 관련이있을 수 있습니다. Windows는 실제로 해당 Linux 체계를 사용하지 않습니다. 어쩌면 당신은 Windows 권한 설정으로 가서 자신에게 권한을 줄 수 있습니다 ...
sinni800

답변:


97

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그룹의 사용자 를 기본 그룹 대신 보조 그룹 으로 지정하기 때문에 예상대로 작동 합니다. 이는 올바른 동작입니다.


12
나는 chgrp -Rv 사용자가 필요했다 ~ / .ssh / * chmod -vR 600 ~ / .ssh / *
Tomáš Fejfar

위의 @ TomášFejfar 의견은 저에게 효과적이었습니다. 감사.
scaraveos

@ TomášFejfar 매우 도움이되었습니다. 어쩌면 설치 스크립트 나 다른 방법으로 찾을 수있을 것입니다.
dashesy

4
다른 언어로 Windows를 설치 한 경우 Users작동하지 않습니다. cat /etc/group무엇을 교체해야하는지 확인하는 데 사용 하십시오 Users. 예를 들어 네덜란드어에서는로 대체 Users해야 Gebruikers합니다.
thijsai

3
더 이상 작동하지 않습니다. 새로운 솔루션은 @ luke-lee의 솔루션입니다.
fjardon

26

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유틸리티를 변경하지 않은 이유가 궁금 합니다.


1
사용자로 그룹을 변경 한 솔루션은 저에게는 효과가 없었지만 setfacl 기반 솔루션 만 작동했습니다!
dim

2
루크, 나는 당신이 'o'다음에 첫 번째 코드 블록에서 콜론을 놓쳤다 고 생각합니다.
SeldomNeedy

트윗 담아 가기 당신이 옳고 그에 따라 수정되었습니다. 감사!
Luke Lee

1
@SeldomNeedy 몇 가지 추가 검사 후 두 구문이 모두 작동하지만 원래 하나 (콜론 하나)가 더 정확합니다. 'u'및 'g'의 두 번째 콜론은 UID 및 GID를 지정하기위한 것입니다. 'o'의 경우 그러한 지정자가 없으므로 하나의 콜론 만 필요합니다.
Luke Lee

10

다음은 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

cygwin 업데이트에서 이것에 맞았습니다. 스크립트 주셔서 감사합니다. setfacl그 자체로는 끔찍합니다.
Andy Brown

스크립트는 어디에 두나요?
Sisir

스크립트는 cygwin 경로의 어느 곳으로나 갈 수 있습니다. $ HOME / bin 디렉토리를 만들어 거기에 넣을 수도 있습니다 (예 : $ HOME / .bashrc 등).
philwalk

4
chgrp -R Users ~/.ssh

chmod 0600 ~/.ssh/config

chmod 0700 ~/.ssh

이것이 내가 필요한 정확한 단계입니다 (+1).
camomileCase

1

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


1

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


4
더 자세히 설명해 주시겠습니까? 이 문제를 어떻게 해결할 수 있습니까? "Cygwin에서 ssh-keygen 실행"이외의 다른 단계를 수행해야합니까?
DanteTheEgregore

이것은 단지 키를 생성하지만 OP에는 권한이 잘못된 키가 있습니다.
Jonathan

동일한 경험 : chmod / ssh-keygen은 cygwin에서 좋은 권한을 부여하지만 Windows cmd에서 실행하면 그렇게하지 않습니다. (나는 왜 그런지 모르겠다 :-))
autra

-2

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


3
게시물을 확장해야합니다. 좋은 답변 에는 구체적인 지침 (링크뿐만 아니라)과 답변이 OP 질문에 어떻게 또는 왜 해결되는지에 대한 설명이 포함됩니다. 이 두 요소를 모두 적절하게 해결하려면 게시물을 수정하십시오.
Twisty Impersonator 2016
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.