На самом деле, npm не рекомендует не запускаться от имени пользователя root. Ну, не больше.
Он изменился примерно в то же время, когда вы задали свой вопрос. Вот как README выглядел 7 февраля 2011 года: «Использование sudo с npm очень не рекомендуется. Любой может публиковать что угодно, а при установке пакетов могут запускаться произвольные сценарии». Это было объяснено позже более подробно. as "Вариант 4: СВЯТАЯ КОРОВА НЕ РЕКОМЕНДУЕТСЯ !! Вы можете просто использовать sudo все время для всего и игнорировать невероятно неприятные предупреждения, говорящие вам, что вы сошли с ума за это."
См .: https://github.com/isaacs/npm/tree/7288a137f3ea7fafc9d4e7d0001a8cd044d3a22e#readme
Теперь это на самом деле считается рекомендуемой техникой установки npm:
Простая установка - чтобы установить npm одной командой, сделайте следующее:
curl http: / /npmjs.org/install.sh | sudo sh
См .: https://github.com/isaacs/npm/tree/99f804f43327c49ce045ae2c105995636c847145#readme
Мой совет: никогда не делайте этого , потому что это в основном означает:
- выясните, что локальный DNS (или кто-либо другой подделывает ответ DNS или отравляет кеш DNS), является IP-адресом npmjs.org
- соединяется с незащищенным TCP с этим IP (или с тем, кто говорит, что это его IP) через порт 80
- доверяйте маршрутизатору, с которым, по вашему мнению, вы должны поговорить (или любой, кто дал вам ответ DHCP, сказал, что вы должны поговорить) для доставки пакетов на нужный хост
- возможно пройти через другой слой прозрачного кеширующего прокси
- доверяйте всем другим сетям между вами и другим концом TCP-соединения
- точно не знаю, с кем вы связаны
- скрестите пальцы
- запрос сценария install.sh по небезопасному HTTP без какой-либо проверки
- и затем запустите все, что было возвращено тем, с кем вы говорите, с максимальными привилегиями на вашем компьютере, даже не проверяя, что это такое.
Как вы можете видеть, это действительно, буквально, без преувеличения, давая root shell to все, что вы получаете после запроса сценария из Интернета по небезопасному соединению с нет подтверждения вообще . Здесь есть по крайней мере 5 различных вещей, которые могут пойти не так, любая из которых может привести к тому, что злоумышленник получит полный контроль над вашей машиной:
- DHCP-спуфинг
- ARP-спуфинг
- Отравление DNS-кэша
- Подмена DNS-ответа
- Перехват TCP-сессии
Также обратите внимание, что использование 'sh' вместо 'sudo sh' обычно не менее рискованно, если вы не запускаете его от имени другого пользователя, у которого нет доступа к вашим личным данным, что обычно не так.
Вам следует использовать HTTPS-подключения, если они доступны, для загрузки таких сценариев, чтобы вы могли хотя бы проверить, с кем вы разговариваете, и даже тогда я не запустил бы его, не прочитав сначала. К сожалению, npmjs.org имеет самозаверяющий сертификат, поэтому он не очень помогает в этом случае.
К счастью, npm доступен на GitHub, который имеет действительный сертификат SSL и откуда вы можете скачать его, используя безопасное соединение. Смотрите: github.com/isaacs/npm для деталей. Но убедитесь, что сам npm не использует небезопасные соединения для загрузки загружаемых файлов - в конфигурации npm должна быть опция.
Надеюсь, это поможет. Удачи!