Стоит ли выполнять развертывание от имени того же пользователя, который управляет сайтом?

Стоит ли выполнять развертывание от имени того же пользователя, который управляет сайтом?

У меня есть веб-сайт, обслуживаемый 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пользователю и группе.

Связанный контент