Мой 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.