Назад | Перейти на главную страницу

rsync pull игнорирует мою маску, почему?

Мой umask является 0002.

Итак, когда я rsync -r me@remote:new ., почему результаты не доступны для групповой записи?

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

Я ошибочно предположил, что rsync толкать / тянуть без -p флаг будет работать аналогично git push / pull, и что новые файлы будут иметь полные разрешения за вычетом umask.

Однако даже без -p флаг, rsync по-прежнему сохраняет разрешения исходного файла. В -p флаг просто указывает rsync (попытаться) игнорировать umask.

Согласно man rsync:

Новые файлы получают свои «обычные» биты разрешений, установленные на разрешения исходного файла, замаскированные с помощью принимающей стороны umask настройки, а их специальные биты разрешений отключены, за исключением случая, когда новый каталог наследует setgid bit из родительского каталога.

Еще лучше, есть простое предложение, как создать флаг, который игнорирует исходные разрешения:

Чтобы предоставить новым файлам права назначения по умолчанию (оставляя существующие файлы без изменений), убедитесь, что --perms опция выключена и используйте --chmod=ugo=rwX (что обеспечивает включение всех немаскированных битов). Если вы хотите упростить ввод этого последнего поведения, вы можете определить popt псевдоним для него, например, поместить эту строку в файл ~/.popt (это определяет -s вариант и включает --no-g для использования группы по умолчанию целевого каталога):

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

Затем вы можете использовать эту новую опцию в такой команде, как эта:

rsync -asv src/ dest/

(Предупреждение: убедитесь, что -a не следует -s, или он снова включит --no-* параметры.)

Думаю, я буду этим заниматься!

Я думаю, что setgid сбивает с толку. Посмотрите на параметр -p на странице руководства rsync.

Какие разрешения выставлены в оригинале?

Umask - это фильтр, а не настройка. Другими словами, он ограничивает биты разрешений, которые могут быть установлены для файлов (и каталогов). Он не требует и не требует установки каких-либо разрешений, только то, что определенные биты не могут быть установлены.

Если вам нужно настроить групповую запись, вам может потребоваться запустить chmod после rsync.