Usando o Cygwin no Windows 8, o chmod 600 não funciona conforme o esperado?


75

Estou tentando alterar as permissões para o meu arquivo de chave key.pemno Cygwin 1.7.11. Possui os sinalizadores de permissões:-rw-rw----

chmod -c 600 key.pem

Relatórios:

o modo 'key.pem' foi alterado de 0660 (rw-rw ----) para 0600 (rw -------)

Contudo:

ls -l key.pem 

ainda relata

Os sinalizadores de permissão do key.pem ainda são: -rw-rw ----

Esta razão pela qual estou perguntando é que o ssh está reclamando:

As permissões 0660 para 'key.pem' estão muito abertas.

quando tento ssh na minha instância do Amazon EC2. Esse é um problema do Cygwin e do Windows 8 NTFS ou estou faltando alguma coisa?


Isso soa como um bug do Win8 / Cygwin. Eu recomendo denunciá-lo na lista de e-mails da Cygwin .
Me # e

Pode estar relacionado ao NTFS ... O Windows realmente não usa esse esquema de Linux. Talvez você pode tentar ir para as configurações de permissão janelas e apenas dar-se direitos ...
sinni800

Eu acho que isso está relacionado a superuser.com/questions/363141/…
Daniel Stiner 27/03

Respostas:


97

Estou usando o Cygwin no Win8CP e tive o mesmo problema. Definitivamente, é um bug do Cygwin, mas há uma solução alternativa: tente executar:

 chgrp -R Users ~/.ssh

A explicação mais longa é que, por algum motivo, Cygwin /etc/passwde /etc/groupgeração estão colocando o grupo principal / padrão do usuário como None. E você não pode alterar a permissão de None, portanto, o chmodgrupo for não tem efeito.

Eu não tentei reparar os arquivos passwd/ groupsozinho, mas fiz chgrp -R Users ~/.ssh(ou, se você estiver no pré-lançamento do Windows 8, com o nome do grupo HomeUsers). Depois disso, você pode fazer o chmod 0600e funcionará conforme o esperado.

O chgrppara o Usersgrupo pode ser feito nos outros casos semelhantes que você encontrar. Até funciona como esperado, pois o Cygwin coloca os usuários no Usersgrupo como um grupo secundário (em vez de primário , qual seria o comportamento correto).


12
Eu precisava chgrp -rv Usuários ~ / .ssh / * chmod -VR 600 ~ / .ssh / *
Tomáš Fejfar

@ TomášFejfar comentário acima funcionou para mim. Obrigado.
scaraveos

@ TomášFejfar que foi muito útil, talvez ele deve encontrar seu caminho para instalar scripts ou algo
dashesy

4
Observe que se você tiver o Windows instalado em outro idioma, isso Usersnão funcionará. Use cat /etc/grouppara verificar com o que você deve substituir Users. Em holandês, por exemplo, você teria que substituir Userspor Gebruikers.
thijsai

3
Não funciona mais. A nova solução é a de @ luke-lee.
fjardon

26

A partir do Cygwin 1.7.34 (04/02/2015) o método que altera o grupo para Usersnão funciona mais. Em vez disso, você precisa usar o setfaclutilitário do Cygwin .

  • Digamos, se você deseja definir o modo de arquivo para 644 (rw-r--r--)fazer isso:

    setfacl -s u::rw-,g::r--,o:r-- foo.bar
    
  • ou use um formato mais longo:

    setfacl -s user::rw-,group::r--,other::r-- foo.bar
    
  • ou copie seu modo usando getfaclfrom file foopara bar:

    getfacl foo | setfacl -f - bar
    

Um manual completo está na seção "setfacl" do guia do usuário do Cygwin . Eu me pergunto por que Cygwin ainda não mudou de chmodutilidade da mesma forma.


1
soluções com mudança de grupo para Usuários não funcionaram para mim, mas apenas uma baseada em setfacl!
dim

2
Luke, acho que você perdeu dois pontos no seu primeiro bloco de código após o 'o'.
SeldomNeedy 15/09

@SeldomNeedy Argh! Você está certo, corrigido de acordo. Obrigado!
Luke Lee

1
@SeldomNeedy Depois de mais algumas verificações, encontrei ambas as sintaxes, mas a original (com dois pontos) é mais precisa. O segundo cólon para 'u' e 'g' é para especificar UID e GID. Para 'o' não existe esse especificador, portanto, apenas um cólon é necessário.
Luke Lee

10

Aqui está um script que usa a sugestão de Luke Lee, mas suporta argumentos octais como chmod. Ele fornece uma estrutura que pode ser estendida. embora atualmente ofereça suporte apenas a argumentos octais necessários para corrigir a permissão no diretório e nos arquivos key.pem e / ou ~ / .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

Usei-o assim para corrigir meu diretório e arquivos .ssh:

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

Foi atingido por este em uma atualização do cygwin. Obrigado pelo script. setfaclpor si só é horrível.
Andy Brown

Onde coloco o script?
Sisir 14/08/16

o script pode ir a qualquer lugar no seu caminho cygwin. Você pode criar um diretório $ HOME / bin e colocá-lo lá, embora seja necessário adicioná-lo ao seu caminho, por exemplo, em $ HOME / .bashrc.
194 philwalk

4
chgrp -R Users ~/.ssh

chmod 0600 ~/.ssh/config

chmod 0700 ~/.ssh

Estas são as etapas exatas que eu precisava, +1.
camomileCase

1

Se você tem o git bash instalado, execute o mesmo comando ( chmod -c 600 key.pem) com o git bash e evite o Cygwin .


1

Esse problema pode ser resolvido executando o comando ssh-keygen no terminal cygwin (não o prompt de comando normal do Windows). Eu fiz isso na minha máquina windows8.


4
Você pode elaborar mais? Como isso pode resolver o problema? Quais etapas o usuário deve executar além de "executar o ssh-keygen do Cygwin"?
DanteTheEgregore 8/08

Isso só gera uma chave, mas o OP tem uma chave com permissões ruins
Jonathan

A mesma experiência aqui: chmod / ssh-keygen coloca uma boa permissão no cygwin, mas não o faz se eu executá-las no cmd do windows. (Eu não sei porque embora :-))
autra

-2

Execute o instalador do Cygwin e atualize. O bug deve ser corrigido.


3
Sua postagem precisa ser expandida. Uma boa resposta inclui instruções específicas (não apenas links para elas) e uma explicação de como ou por que a resposta aborda a questão dos OPs. Edite sua postagem para abordar adequadamente esses dois elementos.
Twisty Imitador
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.