Permissões Rsync de um servidor para outro - permissão de Mkdir negada (13)

2

Estou tentando usar o rsync para copiar uma pasta de backup em uma máquina local para outra máquina diariamente (em caso de perda de dados ou exclusão acidental). Isso é executado como um cronjob.

Eu apenas o comando

rsync -av --rsh='ssh -p90' --delete /backup/ [email protected]:~/dabackup/

Da conta root no servidor um ( tent ).

No entanto, no primeiro servidor, as permissões em cada um dos subdiretórios são definidas para que você não possa entrar nelas, a menos que você seja root (nenhuma permissão de execução nas pastas), isso é algo que não posso mudar facilmente o software de backup funciona.

Isso significa que, no segundo servidor ( mydomain.com ), a conta tentbackup não tem permissão para ir para as pastas que o rsync está criando, resultando nos seguintes erros

root@tent:~$ rsync -av --rsh='ssh -p92' --delete /backup/ [email protected]:~/dabackup/
building file list ... done
03-05-11/apache/
rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/apache" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
03-05-11/bind/
rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/bind" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
03-05-11/custom/
rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/custom" failed: Permission denied (13)
etc...

Eu poderia contornar esse problema usando [email protected] ( server two ) mas obviamente eu não quero chaves ssh para a conta raiz armazenada em server one ( tent ).

Como posso com segurança permitir que a permissão rsync crie essas subpastas e arquivos?

Mesmo quando estiver conectado ao servidor dois diretamente como "tentbackup", não posso me mover para os diretórios ou criar arquivos dentro deles

tentbackup@brave:~/dabackup$ cd 03-20-11/
bash: cd: 03-20-11/: Permission denied
tentbackup@brave:~/dabackup$ mkdir 03-20-11/test -p
mkdir: cannot create directory '03-20-11': Permission denied
tentbackup@brave:~/dabackup$ touch 03-20-11/test
touch: cannot touch '03-20-11/test': Permission denied
    
por Pez Cuckow 28.08.2011 / 14:41

3 respostas

3

A maneira correta de fazer isso (apesar de alterar as permissões para que você não possa simplesmente restaurar a partir do backup, se elas forem importantes) é adicionar o seguinte ao seu rsynccommand

--no-p --no-g --chmod=ugo=rwX

Onde

--no-p desativa a cópia de permissões

--no-g desativa a cópia em grupo e

--chmod=ugo=rwX garante que todos os bits não mascarados sejam ativados

    
por 05.08.2012 / 14:12
1

Você está tentando fazer algo que é especificamente proibido pelas permissões definidas. Você precisa alterar as permissões definidas ou conceder privilégios especiais ao seu programa. Uma correção pode ser criar uma tarefa cron no servidor que corrige as permissões do diretório. Como alternativa, você poderia ter um programa que seja executado como root , que aguarda um comando do script ssh e corrija as permissões do diretório.

    
por 28.08.2011 / 15:32
1

Você deve ser capaz de fazer isso soltando o sinalizador -a do rsync e usando qualquer sinal que precisar. Logicamente a partir da configuração você não quer fazer isso como root, o que significa que você precisa ignorar as permissões no lado do destino. Certifique-se de não incluir -p no comando rsync e você deve ser capaz de copiar os arquivos com segurança de root @ serverone para user @ servertwo e deve ser capaz de criar diretórios, etc. Lembre-se de que sua árvore de permissões não será lá em servertwo se você precisar restaurar a partir do backup, que deve ser muito fácil escrever um script para consertar espero.

Caso contrário você precisará obter acesso especial para criar e gerenciar os arquivos no servertwo, você pode fazer isso configurando o rsyncd.conf e usando o rsync no modo daemon para que você não precise permitir o ssh entre os dois hosts ( não está claro se talvez outros usuários tenham acesso ao host, o que pode não ser seguro o suficiente).

    
por 28.08.2011 / 16:34