rsync pull desconsidera minha umask, por quê?

3

Meu umask é 0002 .

Então, quando eu rsync -r me@remote:new . , por que os resultados não podem ser gravados em grupo?

drwxrwsr-x 10 root       developers 4096 Aug 22 12:55 .
drwxrwsr-x 12 root       developers 4096 Jul 14 19:05 ..
drwxrwsr-x  3 root       developers 4096 May 16 15:04 old
drwxr-sr-x  4 aaronadams developers 4096 Jun 26 15:17 new
    
por Aaron Adams 22.08.2013 / 20:09

3 respostas

5

Eu assumi incorretamente que um rsync push / pull sem o -p sinalizador funcionaria de forma semelhante a git push / pull e que novos arquivos teriam permissões totais menos o umask .

No entanto, mesmo sem o sinal -p , rsync ainda preservará as permissões do arquivo de origem. O -p sinaliza meramente rsync para (tentar) ignorar umask do receptor.

Como por man rsync :

New files get their "normal" permission bits set to the source file's permissions masked with the receiving end's umask setting, and their special permission bits disabled except in the case where a new directory inherits a setgid bit from its parent directory.

Melhor ainda, há uma sugestão simples de como criar um sinalizador que ignora as permissões de origem:

To give new files the destination-default permissions (while leaving existing files unchanged), make sure that the --perms option is off and use --chmod=ugo=rwX (which ensures that all non-masked bits get enabled). If you'd care to make this latter behavior easier to type, you could define a popt alias for it, such as putting this line in the file ~/.popt (this defines the -s option, and includes --no-g to use the default group of the destination dir):

rsync alias -s --no-p --no-g --chmod=ugo=rwX

You could then use this new option in a command such as this one:

rsync -asv src/ dest/

(Caveat: make sure that -a does not follow -s, or it will re-enable the --no-* options.)

Eu acho que vou fazer isso!

    
por 23.08.2013 / 18:18
3

Eu acho que o setgid está confundindo as coisas. Olhe para a opção -p na página do manual do rsync.

    
por 22.08.2013 / 21:42
2

Quais são as permissões definidas no original?

O umask é um filtro e não uma configuração. Em outras palavras, limita os bits de permissão que podem ser definidos para arquivos (e diretórios). Ele não força ou requer que nenhuma permissão seja definida, apenas que certos bits não podem ser definidos.

Se você precisa que a gravação em grupo seja definida, pode ser necessário executar chmod após o rsync.

    
por 22.08.2013 / 22:34

Tags