Назад | Перейти на главную страницу

К каким каталогам нужен доступ nginx?

Я пишу служебный файл systemd для nginx, и служба с выходом в Интернет, работающая с правами root, - плохая идея, однако мне нужен nginx для доступа к определенному каталогу в домашнем каталоге каждого пользователя.

например

/ домашний / пользователь1 / статический / домашний / пользователь2 / статический

Однако я не хочу, чтобы кто-либо, кроме nginx (и root), имел доступ к каталогам пользователей.

И здесь возникает дилемма.

/ home / user1 и подкаталоги должны принадлежать user1: user1 на случай, если один пользователь будет скомпрометирован.

Это означает, что, если я чего-то не упускаю, nginx необходимо запускать от имени пользователя root. GOTO 10.

И из-за этого ему нужен доступ к некоторым каталогам. Его конфигурационный каталог, например / etc / nginx в этом случае. Но и другие каталоги. И у меня вопрос: какие это каталоги?

В качестве обходного пути вы можете:

  1. Установите 750 разрешений для каталогов / home / user1, / home / user2 и т. Д. И для каталога ~ / static для каждого пользователя.

  2. Если рабочие nginx работают под nginx: nginx, вы можете добавить всех своих пользователей в группу. Nginx, и nginx теперь сможет получить доступ к / home / user1 / static, / home / user2 / static и т. Д.

Конечно, не рекомендуется устанавливать 750 в домашнем каталоге, но в этом случае у вас нет другого пути, потому что если вы запустите nginx под root, он сможет получить доступ ко всей системе, а не только к вашим пользовательским каталогам, возможно, к некоторым частным ключи и другие важные вещи.

Есть и другой способ сделать это:

  1. Создайте каталоги где-нибудь еще, например / srv / user1, / srv / user2, установите для них разрешения 750 и user1: nginx, user2: nginx owner: groups. Таким образом, nginx может легко читать из этого каталога.
  2. Создайте символические ссылки на эти каталоги:

    / домашний / пользователь1 / статический -> / SRV / пользователь1

    / домашний / пользователь2 / статический -> / SRV / пользователь2

    поэтому пользователь может легко получить к ним доступ и изменить их, в то время как права на домашние каталоги для пользователей оставлены 700.

Так что это не обходной путь, а решение. И вам не придется запускать nginx с правами root.

Nginx нужно будет прочитать в / home / user # / static.

Каждый пользователь будет нести ответственность за то, чтобы nginx мог читать каталог.

По умолчанию nginx ЧИТАЕТ из

/ etc / nginx и подкаталоги

nginx ЗАПИСЫВАЕТ только там, где он настроен, например, настроенные файлы журналов (часто в / var / log / nginx).

не забудьте проверить свой сценарий инициализации на наличие параметра '-g', который может включать некоторые дополнительные параметры (например, какой файл PID использовать)

Кроме того, nginx обычно запускается от имени пользователя root, а позже переходит к настроенному пользователю.