5

Я обычно использую графический клиент SSH для синхронизации локального и удаленного каталога. И я должен установить право собственности на все файлы от root до www-data .

Могу ли я сделать то же самое с Rsync, только чтобы я делал это как www-data вместо root , чтобы впоследствии мне не пришлось устанавливать владельца?

3 ответа3

6

Непонятно, что вы хотите сделать, поэтому позвольте мне предположить, что вы хотите, чтобы локальные файлы принадлежали пользователю A, а удаленные файлы принадлежали пользователю B. Если вы выполняете следующую команду как пользователь A:

rsync [options] B@remote.system:/path/to/remote/dir /path/to/local/dir

это будет иметь эффект, который вы хотите. Но на самом деле это не проблема rsync (поэтому я не уточняю, что будет делать вышеприведенная команда, я сосредоточусь на вашем вопросе); даже с вашим графическим SSH-клиентом вы сможете сделать то же самое, если вы запустите его как пользователь A и настроите его для входа в удаленную систему как пользователь B.

4

При условии, что вы работаете от имени пользователя root, используйте опцию chown, встроенную в rsync:

sudo rsync --chown=www-data:group user@remoteIP:/var/www/html/ /var/www/html

(замените 'group' на желаемую группу или просто используйте --chown = www-data, также замените user, remoteIP и измените папки по своему вкусу)

Если вы не запустите команду от имени root, владение файлом не изменится, так как для этого вам понадобится sudo. Таким образом, вам придется выполнять команду как www-данные, но это приводит к другим сложностям.

2

если вы можете использовать sudo -u www-data, вы можете запустить rsync с этим пользователем. если ваш пункт назначения находится на другом сервере, то вам также нужно установить --rsync-path на тот же (sudo -u www-data rsync). вам также нужно обойти проблему tty (используя -t в вашем ssh), хотя, в зависимости от вашего дистрибутива и настроек сервера ssh, это может быть очень сложно. лично я думаю, что проще просто использовать root и делать chown впоследствии, если сервер не разрешает удаленный вход в систему root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .