Проблеми з командою Rsync, дозволи власника та групи не змінюються


28

Я намагаюся встановити власника та групу через, rsyncі, схоже, це не працює.

Це команда:

sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/

Файли синхронізуються правильно, але, схоже, не змінюють власника та групу.

Відповіді:


14

Здається, це працює правильно. Використання --ownerі --groupдля збереження (не встановлено) імен власника і групи ... це означає , що ви не хочете, щоб змінити після передачі.

Якщо ви не скористаєтесь цими параметрами, користувач та група будуть змінені на користувача, що викликає, на кінцевому прийомі. Якщо ви хочете вказати іншого користувача, вам потрібно буде додати chownкоманду до свого сценарію.

-o, --owner
    This option causes rsync to set the owner of the destination file to be 
    the same as  the source file, but only if the receiving rsync is being run 
    as the super-user (see also the --super and --fake-super options). Without 
    this option, the owner of new and/or transferred files are set to the invoking 
    user on the receiving side...

-g, --group
    This option causes rsync to set the group of the destination file to be the same as 
    the source file. If the receiving program is not running as the super-user (or if
    --no-super was specified), only groups that the invoking user on the receiving side
    is a member of will be preserved. Without this option, the group is set to the default
    group of the invoking user on the receiving side...

людина rsync


1
Тож як я можу віддалено подавляти користувачів та групу? Через ssh? Скажіть, будь ласка, як? У мене є кореневий доступ для обох серверів. Я не хочу використовувати клавіші ssh, але скажіть мені всі варіанти, які ви знаєте, я буду вдячний. Дякую за швидку відповідь
Арнольдо Базалдуа

Команда виглядатиме приблизно так: ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
user3150166

Я спробував це, але нічого не вийшло, власники та користувачі однакові. Після виконання команди каже: stdin: не tty
Арнольдо Базалдуа

Він працює зараз, проблеми з брандмауером. Тепер мені просто потрібно автоматизувати введення пароля для ssh та rsync
Арнольдо Базалдуа

Я опублікую це в інших питаннях, дякую за допомогу
Арнольдо Базалдуа

61

Версія 3.1.0 rsync представила --usermapта --groupmapзгадувала Томас, але також і варіант зручності --chown, який добре працює для вашого сценарію.

--chown=USER:GROUP
    This option forces all files to be owned by USER with group GROUP.
    This  is  a  simpler  interface  than  using  --usermap  and  --groupmap directly,
    but  it  is implemented using those options internally, so you cannot mix them.
    If either the USER or GROUP is empty, no mapping for the omitted user/group will
    occur.  If GROUP is empty, the trailing colon may be omitted, but if USER is
    empty, a leading colon must  be supplied.

    If you specify "--chown=foo:bar, this is exactly the same as specifying
    "--usermap=*:foo --groupmap=*:bar", only easier.

Також потрібні опції -oта -gпараметри. Виключення їх не зможе оновити відповідний атрибут, але не призведе до помилок.

rsync -og --chown=cmsseren:cmsseren [src] [dest]

Про це йдеться побічно в сторінки керівництва , в якому говориться , що --chownваріант «реалізується з використанням --usermapі --groupmapвсередині», а також :

Для --usermapможливості мати якийсь - або ефект, -o( --ownerопція) слід використовувати (або мається на увазі), і приймач повинен буде працювати в якості супер-користувача (дивіться також --fake-superопцію).

Для --groupmapможливості мати якийсь - або ефект, -g( --groupsопція) слід використовувати (або мається на увазі), і приймач повинен мати права доступу , щоб встановити цю групу.


5
Чому потрібен -og? Мені це здається нелогічним, але це потрібно і в моїй системі.
Yai0Phah

4
@FrankScience Погодився, здається, це нелогічно. Це ж питання було задано у списку розсилки rsync . "Я б припустив, що документи для --chownбуде добре згадати це --owner( --super) і --groupпотрібні" .
TachyonVortex

5

Остання версія (принаймні 3.1.1) rsync дозволяє вказати "віддалене володіння":

--usermap=tom:www-data

Змінює право власності на дані www (дані PHP / Nginx). Якщо ви використовуєте Mac як клієнт, використовуйте варити, щоб оновити до останньої версії. А на своєму сервері завантажте джерела архівів, а потім "зробіть" це!


0

Іншим рішенням може бути зміна віддаленого користувача, який встановлює rsyncз'єднання за допомогою --rsync-path. Тут я розмістив повне пояснення:

/unix//a/546296/116861

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.