Como preservar o modo de arquivo com rsync, exceto para bits setuid?

0

Eu me deparo com um erro "Cota de disco excedida (122)" se eu usar rsync -p <args> para copiar arquivos.

rsync -rlptD --chown username:org1 -- local/ /project/org1/

Eu gostaria de preservar a leitura e a execução de bits em arquivos e diretórios, mas forçar o destino a ter o grupo setuid g+s nos diretórios.

O motivo para querer g+s em diretórios é para que novos arquivos herdem a propriedade de grupo do projeto. No meu ambiente, se os arquivos nas pastas do projeto (por exemplo, /project/foo/ ) forem de propriedade do meu grupo pessoal (nome do grupo == nome do usuário), me deparo com o erro de cota.

Eu dei o argumento --chown username:org1 ao rsync como uma tentativa de forçar o uso do grupo org1 , mas é insuficiente. Eu acho que há uma condição de corrida em que o rsync aplica a propriedade desejada user:group após os arquivos temporariamente serem renomeados para o local final.

Se eu remover o -p dos sinalizadores rsync, posso transferir sem erros, mas perco os bits de permissão da origem. Sem -p , qualquer arquivo temporário criado pelo rsync na pasta de destino herda corretamente o grupo de projetos da pasta raiz e as subpastas herdam o grupo setuid.

Existe uma maneira de dar ao rsync uma máscara de permissões para manter? Eu preciso do bitmask 777 da fonte, mas g+s set (incondicionalmente) para diretórios remotos.

    
por init_js 05.10.2018 / 04:08

1 resposta

0

Acredito que a opção --chmod RULE[,RULE]* possa ajudar.

De man rsync (1):

--chmod

This option tells rsync to apply one or more comma-separated "chmod" modes to the permission of the files in the transfer. The resulting value is treated as though it were the permissions that the sending side supplied for the file, which means that this option can seem to have no effect on existing files if --perms is not enabled.

Tente --chmod Dg+s para forçar os diretórios no controle remoto a terem setuid nos diretórios.

    
por 05.10.2018 / 04:08