Я пишу служебный файл systemd для nginx, и служба с выходом в Интернет, работающая с правами root, - плохая идея, однако мне нужен nginx для доступа к определенному каталогу в домашнем каталоге каждого пользователя.
например
/ домашний / пользователь1 / статический / домашний / пользователь2 / статический
Однако я не хочу, чтобы кто-либо, кроме nginx (и root), имел доступ к каталогам пользователей.
И здесь возникает дилемма.
/ home / user1 и подкаталоги должны принадлежать user1: user1 на случай, если один пользователь будет скомпрометирован.
Это означает, что, если я чего-то не упускаю, nginx необходимо запускать от имени пользователя root. GOTO 10.
И из-за этого ему нужен доступ к некоторым каталогам. Его конфигурационный каталог, например / etc / nginx в этом случае. Но и другие каталоги. И у меня вопрос: какие это каталоги?
В качестве обходного пути вы можете:
Установите 750 разрешений для каталогов / home / user1, / home / user2 и т. Д. И для каталога ~ / static для каждого пользователя.
Если рабочие nginx работают под nginx: nginx, вы можете добавить всех своих пользователей в группу. Nginx, и nginx теперь сможет получить доступ к / home / user1 / static, / home / user2 / static и т. Д.
Конечно, не рекомендуется устанавливать 750 в домашнем каталоге, но в этом случае у вас нет другого пути, потому что если вы запустите nginx под root, он сможет получить доступ ко всей системе, а не только к вашим пользовательским каталогам, возможно, к некоторым частным ключи и другие важные вещи.
Есть и другой способ сделать это:
Создайте символические ссылки на эти каталоги:
/ домашний / пользователь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, а позже переходит к настроенному пользователю.