У меня есть сервер Ubuntu 10.04, на котором запущен nginx, а nginx работает как пользователь nginx
. Я пытаюсь развернуть Octopressсайта с rsync и наткнулись на то, что выглядит как дилемма безопасности.
Очевидно, что весь /srv/www/
каталог должен быть доступен для чтения пользователем nginx
, и несколько каталогов загрузки должны быть доступны для записи пользователем nginx
.
Octopress любит подключаться к серверу по ssh, и это хорошо. Поскольку у меня слабое чувство даяния nginx
удаленный доступ к оболочке, я создал специального пользователя (deployer
) только для этой цели, который настроен на доступ к оболочке и может подключаться через ssh. Rsync работает нормально, но все веб-файлы копируются как принадлежащие deployer
, и пользователь nginx
не могу их прочитать.
Я мог бы добавить пользователя nginx
группировать deployer
и поиграйте с rsync --chmod
и -p
параметры, позволяющие nginx / php писать в каталоги загрузки, но я не уверен, что это меня не укусит позже. В идеале я думаю, что мне нужно что-то вроде rsync-then-chown & chmod, но я подозреваю, что это слишком много, чтобы просить.
Какие лучшие практики? Как делать ты пойти об этом?
Заранее спасибо.
Это основная проблема доступа. Вы хотите иметь двух пользователей с ограниченным доступом и хотите, чтобы они как-то обменивались файлами.
«Традиционное» решение - создать новую группу, поместить туда обоих пользователей и каким-то образом принудить, чтобы файлы принадлежали этой группе. Тем не менее, у вас будут проблемы с доступом на запись, если вы не установите права доступа и с вновь созданными файлами. Оба варианта решаемы (каталоги umask и setuid).
Лучший способ, который не должен вас укусить позже, - это немного покопаться в структуре, посмотреть, какие каталоги должны быть доступны для записи, и изменить сценарий. Т.е. если у вас есть каталог кеша, куда пользователю nginx нужно писать - не синхронизируйте его через rsync и настраивайте разрешения, чтобы nginx мог писать туда.
В крайнем случае будет сценарий root (вероятно, из cron или icron) для «исправления» разрешений.