У меня есть веб-приложение, чей код принадлежит пользователю root на удаленном сервере Ubuntu. Код приложения сохраняется в /var /www /. Большинство файлов и подкаталогов для кода также принадлежат пользователю root. Когда я пытаюсь получить последние изменения в коде из моего хранилища битовых кодов, я получаю следующую ошибку: «недостаточно прав для добавления объекта в базу данных хранилища .git /objects». Большинство подкаталогов и файлов в папке проекта .git /objects не имеют разрешения на запись для пользователей без полномочий root. Каков наилучший подход для устранения этой ошибки и обеспечения успешного git pull? 1) изменить пользователя для всех этих файлов / папок в .git /objects или 2) изменить разрешения для всех этих файлов / папок, чтобы разрешить всем пользователям доступ на запись, или 3) что-то еще?
1 ответ
0
Обычный подход состоит в том, чтобы иметь пользователей и группы специального назначения для выполнения такого рода задач - обычно по одному на службу, такую как Apache HTTPD, PostgreSQL, NTPD, Docker и т.д. - с абсолютно минимальным доступом. Таким образом, существует минимальный риск для остальной системы.
В частности, я думаю, что это будет безопасный подход:
- Должны быть пользователь и группа специально для веб-сервера. Веб-сервер должен работать от имени этого пользователя. Я считаю, что это часто "www", поэтому мы пойдем с этим сейчас.
- Создайте нового пользователя, такого как "deployer" или что-то в группе "www".
- Сделайте его владельцем всех файлов:
chown -R deployer:www /var/www
. - Ограничьте групповой доступ к каталогам чтения и обхода:
chmod -R g=rX /var/www
. - Убедитесь, что только установщик имеет доступ по крайней мере к каталогу .git:
chmod -R go= /var/www/.git
. Добавьте любые другие файлы, которые никогда не должны обслуживаться через Интернет.