У меня есть веб-приложение, чей код принадлежит пользователю root на удаленном сервере Ubuntu. Код приложения сохраняется в /var /www /. Большинство файлов и подкаталогов для кода также принадлежат пользователю root. Когда я пытаюсь получить последние изменения в коде из моего хранилища битовых кодов, я получаю следующую ошибку: «недостаточно прав для добавления объекта в базу данных хранилища .git /objects». Большинство подкаталогов и файлов в папке проекта .git /objects не имеют разрешения на запись для пользователей без полномочий root. Каков наилучший подход для устранения этой ошибки и обеспечения успешного git pull? 1) изменить пользователя для всех этих файлов / папок в .git /objects или 2) изменить разрешения для всех этих файлов / папок, чтобы разрешить всем пользователям доступ на запись, или 3) что-то еще?

1 ответ1

0

Обычный подход состоит в том, чтобы иметь пользователей и группы специального назначения для выполнения такого рода задач - обычно по одному на службу, такую как Apache HTTPD, PostgreSQL, NTPD, Docker и т.д. - с абсолютно минимальным доступом. Таким образом, существует минимальный риск для остальной системы.

В частности, я думаю, что это будет безопасный подход:

  1. Должны быть пользователь и группа специально для веб-сервера. Веб-сервер должен работать от имени этого пользователя. Я считаю, что это часто "www", поэтому мы пойдем с этим сейчас.
  2. Создайте нового пользователя, такого как "deployer" или что-то в группе "www".
  3. Сделайте его владельцем всех файлов: chown -R deployer:www /var/www .
  4. Ограничьте групповой доступ к каталогам чтения и обхода: chmod -R g=rX /var/www .
  5. Убедитесь, что только установщик имеет доступ по крайней мере к каталогу .git: chmod -R go= /var/www/.git . Добавьте любые другие файлы, которые никогда не должны обслуживаться через Интернет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .