Подтвердить что ты не робот

Rsync разрешает вопрос - перманент назначения не применяется должным образом

Это то, что я пытаюсь сделать:

rsync -rvl --chmod=ug=rwX,o=rX test /var/www

и после этого я получаю следующие результаты:

drwxr-xr-x

(На самом деле это drwxr-sr-x, но это, вероятно, не важно... это?)

Это, очевидно, не то, что я хочу. Я хочу, чтобы у группы были права на запись, но по какой-то причине команда rsync не устанавливает их.

У кого-нибудь есть идеи, почему нет? Есть ли ошибка в моем синтаксисе? Если это полезно, я переношу из OSX в Linux (Debian).

Update: Кроме того, если это полезно, когда я вхожу в umask, я получаю 0002. Так что не проблема.

4b9b3361

Ответ 1

--chmod отменяет права на отправку, но если вы не укажете -p или --perms, то значения по умолчанию используются независимо (т.е. --chmod игнорируется).

Из man 1 rsync:

- CHMOD

Этот параметр указывает rsync применять один или несколько разделенных запятыми   строки "chmod" для разрешения файлов в передаче.   Полученное значение обрабатывается так, как если бы это были разрешения   что отправляющая сторона подана для файла, что означает, что    Этот параметр может не влиять на существующие файлы, если   --perms не включен.

Ответ 2

Вам нужно использовать --chmod с параметрами -p, например:

$ rsync -avz --chmod=o-rwx -p tata/ tata2/

И вот полный тест:

Создайте файл в папке

$ mkdir tata
$ mkdir tata2
$ cd tata
$ touch tyoto
$ touch tiuti

Пределы по умолчанию: u=rw, g=r, o=r

$ ls -l 
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto

Попробуйте rsync без параметров

$ cd ..
$ rsync -avz tata/ tata2/

Перманент назначения совпадает с исходными файлами

$ ls -l tata2
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto

Укажите параметры rsync --chmod=o-rwx -p

$ rsync -avz --chmod=o-rwx -p tata/ tata2/
$ ls -l tata2
total 0
-rw-r----- 1 romain users 0 fév 16 11:48 tiuti
-rw-r----- 1 romain users 0 fév 16 11:48 tyoto

И теперь ваши черты в порядке.

Ответ 3

Думаю, вам нужно добавить --perms (aka -p). Цитата из manpage:

Если этот параметр выключен, разрешения устанавливаются следующим образом:

...

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

Я подозреваю, что ваша целевая система имеет типичный umask, такой как 022, который предотвращает установку бита записи группы с помощью rsync. К сожалению, --chmod не упоминает, как umask действует или не применяется.