Comportamento de Cópia Segura Interessante

2

Não sei bem por onde fazer essa pergunta, por isso, se esse não for o lugar certo, apenas me avise e eu irei movê-lo.

Hoje eu estava tentando usar o scp recursivo para copiar um diretório entre dois servidores Linux e cometi um erro de digitação ao me referir ao servidor de destino. Em vez de transferir o diretório para a outra máquina, ele começou a transferir o arquivo de volta para si mesmo. Demorei um pouco para perceber o que estava fazendo, já que o diretório era muito grande, mas depois comecei a ver os mesmos arquivos surgindo de novo e de novo no status da transferência até matá-lo. Isso me confundiu que isso foi permitido e eu tenho algumas perguntas.

Eu acho que a minha principal questão que eu gostaria de perguntar a todos, porém, é se existe alguma instância em que um usuário precisaria fazer uma cópia segura para si mesmo na mesma máquina ou é um efeito colateral desnecessário de scp que foi apenas ignorado?

Editar - Desculpe pessoal, aqui está o comando real

scp -r /path/to/dir SameUser@sameserver:/path/to/dir

    
por degausser 08.08.2012 / 19:23

2 respostas

1

Para copiar arquivos na mesma máquina, você não precisaria de scp . De qualquer forma, se você especificar um diretório ou arquivo como destino em vez de um nome de host e um caminho, ele irá copiá-lo para você localmente, o que parece ser o que aconteceu. Se você fornecer a linha de comando usada, podemos apontar o que aconteceu exatamente.

EDITAR: Com a linha de comando fornecida, o que ela faz é passar pela interface de rede, conectar-se ao servidor SSHD em sua máquina local e fazer a cópia. Não há uma boa razão para isso, pois você pode copiá-lo localmente com cp .

    
por 08.08.2012 / 19:35
1

É um caso especial que raramente é útil. Mas detectar isso seria difícil, prejudicial e inútil.

Difícil, porque você sabe que é o mesmo usuário na mesma máquina? Há muitos casos raros de borda em que até ssh $USER@localhost não entra em contato com a mesma conta e o programa scp nem sempre está em posição de dizer. Por exemplo:

  • localhost não aponta para a máquina local, devido a um DNS não convencional mas legal ou alias ssh_config .
  • ssh é invocado dentro de um chroot, mas o servidor ssh está rodando fora do chroot, ou em um chroot diferente.
  • A porta ssh na máquina local salta as conexões para outra máquina.
  • scp é invocado de uma sessão com privilégios reduzidos; no site remoto de scp $USER@localhost , os privilégios padrão do usuário são mantidos.

Nocivo porque complicaria muito o comportamento de scp . Em vez de “copiar arquivos, usando o SSH como o transporte”, ele se tornaria “arquivos de cópia, usando o SSH como o transporte, exceto se a origem e o destino forem detectados como sendo o mesmo usuário na mesma máquina”. Que nojo. Então, se alguém escrever um script que use o scp e usar os nomes da máquina e do usuário como parâmetros, o script deverá incluir um caso especial: se a origem e o destino forem a mesma conta na mesma máquina, ligue para cp instea de scp . O roteirista teria que corresponder exatamente à lógica de scp .

Inútil porque só pegaria um erro de digitação possível entre muitos. Porque se importar? Você pode ter digitado o nome de um servidor diferente ou digitado incorretamente o caminho ou o nome de usuário, etc.

    
por 09.08.2012 / 03:03