У меня есть веб-сайт, обслуживаемый Nginx, и я недавно настроил для него сборки и развертывания Travis.
Nginx запускает веб-сайт как www-data
пользователь. Я создал пользователя deploy
, чтобы Travis мог войти на сервер через SSH и развернуть веб-сайт. Развернутые файлы хранятся с deploy
пользователем в качестве владельца, который отличается от пользователя, который запускает веб-сайт ( www-data
).
Я боюсь, что возникнут проблемы с разрешениями при запуске веб-сайта с этой настройкой. Стоит ли использовать одного и того же пользователя www-data
/ deploy
для запуска и развертывания веб-сайта? При таком подходе возникнут ли у меня проблемы, если я разрешу пользователю, запускающему веб-сайт, удаленно входить в систему через SSH?
Пожалуйста, просветите меня по этому поводу.
решение1
На самом деле, файлы не должны принадлежать кому-либо, www-data
поскольку это означает, что Nginx может изменять их, что в большинстве случаев не то, что вам нужно (если только это не CMS, которая должна обновляться самостоятельно).
Поэтому все файлы должны принадлежать deploy
.
Если это CMS и вам нужно записать в несколько папок, то эти несколько (одна?) папка действительно должны принадлежать www-data
. Это может вызвать проблему, если развертывание также выполняет самую первую установку. Либо предложите пользователю запустить ручной шаг, либо сделайте так, чтобы специальный инструмент выполнил эту работу, но если это одноразовая вещь, просто сделайте это вручную, это будет достаточно просто (особенно потому, что у вас всего одна такая папка, верно?) CMS также может сообщить вам, если есть такая проблема, и остановиться вместо того, чтобы обслуживать страницы. Таким образом, вы узнаете об этом немедленно и сможете избежать проблем при попытке загрузить файл или выполнить какое-либо подобное действие.
Конечно, файлы не принадлежат , www-data
но они должны быть доступны для чтения www-data
. Так что либо сделайте их доступными для чтения другим ( -rw-r--r--
), либо рассмотрите возможность установки группы в www-data
( -rw-r-----
). В большинстве случаев я видел, как люди даже не рисковали использовать группу. Они просто позволяли другим получать доступ к файлам, потому что так безопаснее.
Конечно, это также означает, что у Nginx не будет прав доступа к deploy
пользователю и группе.