Usando Unison / rsync sobre SSH para sincronizar sites em que o acesso ao sistema de arquivos completo é necessário, mas o login da raiz está desabilitado

2

Assuma dois sites A e B com o servidor de arquivos em cada extremidade. O conteúdo de /storage deve ser sincronizado entre os sites, preservando a propriedade e as permissões. Não há um grupo abrangente que possua todos os arquivos em /storage . Se estiver executando Unison ou rsync pid = 0, é trivial fazer a sincronização. No entanto, o SSH deve ser usado como transporte e, por motivos óbvios, o login de raiz do SSH foi desativado em ambas as extremidades.

Como posso manter A e B sincronizados com todas as permissões preservadas nessa situação? Dois métodos que posso pensar:

  • A execução de um SSH secundário que permite logins raiz ainda pode se conectar somente através de uma VPN entre A e B.
  • adicionando um usuário de sincronização especial cuja configuração do sshd forçosamente executa
    • Wrapper SUID para Unison ou rsync ( perigoso para acertar ).
    • sudo wrapper para Unison ou rsync

As respostas dadas à questão Usar remotamente o root sobre o ssh para uníssono sugira habilitar o login da raiz do pubkey sem senha sobre o SSH - não estou muito interessado nessa solução.

Alguma outra ideia?

    
por datenwolf 23.04.2015 / 20:04

2 respostas

1

O login da raiz da chave pública sobre o SSH é provavelmente sua melhor aposta. Além disso, você pode restringir esse acesso a um único host:

AllowUsers [email protected]

Ou até mesmo use a diretiva Match para obter uma configuração única para um determinado item (endereço, usuário etc.):

Match Address 192.0.2.123
    PasswordAuthentication no
    RSAAuthentication yes
    PubkeyAuthentication yes
    PermitRootLogin yes
    
por 23.04.2015 / 20:11
0

Como executar uma instância unison remota como root:

Lado remoto

  • não toque na sua configuração do sshd, especialmente não crie nenhum usuário especial de sincronização [ssh] como você afirma na sua pergunta

  • crie o wrapper sudo vi sunison :

#!/data/data/com.termux/files/usr/bin/bash
su --preserve-environment -c 'which unison' "$@"

(sim, isso é para o ambiente do Termux, simplifique as suas necessidades)

Lado do cliente

  • execute em uníssono com -servercmd sunison
  • ou adicione ao seu perfil de uníssono servercmd = sunison

Notas

  • algo como servercmd = sudo unison seria melhor, mas não funcionou para mim
por 02.07.2018 / 16:19