Безопасно ли запускать Ruby HTTP-сервер от пользователя, которому принадлежит кодовая база? - PullRequest
0 голосов
/ 27 августа 2018

Например, в приложениях на основе PHP рекомендуется запускать PHP-FPM от пользователя, отличного от пользователя, которому принадлежит кодовая база, поэтому, если кто-то взломает ваше приложение из Интернета, не сможет ничего записать в кодовую базу (кроме каталог публичных активов). Похоже, что приложения ruby ​​предназначены для запуска HTTP-серверов (или серверов приложений / граблей), таких как Unicorn и Puma от одного и того же пользователя. Puma (сервер rails по умолчанию) даже не имеет записей конфигурации для указания пользователя / группы.

UPDATE

То, что я ожидаю сделать с приложением ruby ​​(то же самое, что я делаю с PHP-FPM), это запустить sudo unicorn или sudo puma от пользователя по умолчанию (владельца кодовой базы) и указать пользователя / группу (например, * 1009). *) в конфигурации, поэтому HTTP-сервер будет запускать главный процесс из корневых и дочерних процессов из www-data. У Puma нет таких настроек, и я не нашел никаких проблем в репозитории Puma. Это заставило меня задуматься о том, что, возможно, в экосистеме Ruby распространено такое поведение. Я все еще пытался запустить последнее приложение rails (5.2.1) с единорогом, но столкнулся с другой проблемой: rails зависит от гема bootsnap, и когда вы запускаете sudo unicorn -c config.rb, он создает каталоги tmp/cache/bootsnap-* как root (в главном процессе), который нарушает все потому что дочерние процессы, запущенные из www-data, не будут иметь к нему доступа. Это заставило меня снова подумать, что, возможно, я делаю что-то не так, и все в порядке, чтобы запускать приложения ruby ​​от владельца базы кода, хотя я не вижу аргументов, как это отличается от запуска PHP-FPM.

...