2012-06-21 2 views
13

Я понимаю, что сохраняю разрешения для rsync. Однако в моем случае у моего локального компьютера нет пользователя, для которого файлы должны находиться под веб-сервером. Поэтому, когда я rsync, мне нужен владелец и группа, чтобы быть apache на веб-сервере, но быть моим именем пользователя на моем локальном компьютере. Какие-либо предложения?Как сменить владельца на rsync

Я хотел уточнить, чтобы точно объяснить, что мне нужно сделать.

Мой персональный компьютер: названный «дом» с учетной записью пользователя Мой веб-сервер "Михайловском: с именем«сервер»с учетной записью пользователя«удаленный»и учетная запись пользователя«Апач»

Текущая ситуация: Мой сайт находится на «домашнем» с владельцем «майкл» и на «сервере» с владельцем «apache». «home» должен использовать пользователя «michael» и «server» должен использовать пользователя «apache»

Задача: rsync мой сайт на 'home' на 'server', но все владельцы файлов ' apache 'и группа' apache '

Проблема: rsync предоставит разрешения, владельца и группу; однако, мне нужно, чтобы все файлы были владельцем apache. Я знаю, что не предваряется, что владелец поместит владельца пользователя на «сервер», но так как этот пользователь «удален», то он использует это вместо «apache». Я не могу rsync с пользователем apache (что было бы неплохо), но риск для безопасности, который я не хочу открывать.

Моя единственная идея о том, как решить: после каждого rsync вручную chown -R и chgrp -R, но это огромная система, и это занимает много времени, тем более, что это происходит на производстве.

Кто-нибудь знает, как это сделать?

Текущая команда Я использую Rsync: Rsync --progress -rltpDzC --force --delete -e "SSH -p22" ./ [email protected]:/сайт

+0

You были немного расплывчаты относительно того, как вы передаете файлы - через ssh, я предполагаю? Вы ssh-ing на веб-сервере, и если да, то как пользователь? Не могли бы вы предоставить команду, когда вы ее запускаете сейчас? – Adam

+0

Я обновил свой вопрос для более глубокого объяснения. Да, я использую ssh для rsync для удаленного веб-сервера. –

ответ

11

Есть хаки вы могли бы собравшись на приемной машине, чтобы получить право собственности - запустить «chmod -R apache/website» из cron будет эффективным, но довольно kludgey вариант - но вместо этого я бы рекомендовал безопасно, позволяющий rsync-over- SSH-а-апашем.

Вы бы создать специальный SSH ключей для этого:

ssh-keygen -f ~/.ssh/apache-rsync 

, а затем принять ~/.ssh/apache-rsync.pub к веб-серверу, где вы бы поставить его в ~ апача/.ssh/authorized_keys и тщательно указать допустимую команду, что-то вроде так, все в одной строке:

command="rsync --server -vlogDtprCz --delete . /website",from="IP.ADDR.OF.SENDER",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAABKEYPUBTEXTsVX9NjIK59wJ+fjDgTQtGwhATsfidQbO6u77dbAjTUmWCZjKAQ/fEFWZGSlqcO2yXXXXXXXXXXVd9DSS1tjE6vAQaRdnMXBggtn4M9rnePD2qlR5QOAUUwhyFPhm6U4VFhRoa3wLvoqCVtCV0cuirB6I45On96OPijOwvAuz3KIE3+W9offomzHsljUMXXXXXXXXXXMoYLywMG/GPrZ8supIDYk57waTQWymUyRohoQqFGMzuDNbq+U0JSRlvLFoVUZ5Piz+gKJwwiFwwAW2iNag/c4Mrb/BVDQAyEQ== [email protected] 

и тогда ваша команда Rsync на вашей «домашней» машине будет что-то вроде

rsync -av --delete -e 'ssh -i ~/.ssh/apache-rsync [email protected]' ./ /website 

Есть и другие способы кожи этой кошки, но это самое ясное и включает в себя наименьшие обходные пути, на мой взгляд. Это предотвращает получение оболочки как apache, которая является самой большой проблемой безопасности, natch. Если вы действительно противно разрешать ssh как apache, есть и другие способы ... но вот как я это сделал.

Ссылки здесь: http://ramblings.narrabilis.com/using-rsync-with-ssh, http://www.sakana.fr/blog/2008/05/07/securing-automated-rsync-over-ssh/

+0

Спасибо. Я не знал, что безопасность ssh может быть специфичной для определенных команд. –

7

Последняя версия (по крайней мере 3.1.1) из Rsync позволяет указать "удаленные собственности":

--usermap=tom:www-data 

Изменение TOM собственность на WWW-данные (он же PHP/Nginx). Если вы используете Mac в качестве клиента, используйте варево для обновления до последней версии. И на вашем сервере загрузите источники архивов, затем «сделайте» это!

+0

Спасибо! Я проверю это. –

28

Если у вас есть доступ к Rsync v.3.1.0 или более поздней версии, используйте опцию --chown:

rsync -og --chown=apache:apache [src] [dst] 

Более подробная информации в ответе от аналогичного вопроса здесь: ServerFault: Rsync command issues, owner and group permissions doesn´t change

+0

Невозможно объединить кросс-сайт, Дэвид - спасибо за скрещивание. – Shog9

+1

Кажется, что оба клиента ** и сервер ** должны работать с 3.1.0+, чтобы использовать '--chown'. – Jacket

+0

спасибо! обновленный rsync с homebrew на моей локальной машине, и это работало как шарм – OregonTrail

Смежные вопросы