Запустите npm от имени суперпользователя, это не очень хорошая идея?

Я получаю ошибки с npm при попытке установить / обновить пакеты без прав SU в Linux.

Самый простой способ решить проблему - выполнить sudo npm install <package>, но я не уверен, что это хорошая идея.

Лучший способ - стать владельцем .npm папку, как я нашел в вопросах Stackru и сообщениях в блоге.

Мой вопрос: зачем бегать npm как SU это не очень хорошая идея?

1 ответ

Решение

Бег npm как суперпользователь рискует запустить некоторый ненадежный код как суперпользователь, который потенциально может испортить всю вашу систему. Бег npm поскольку непривилегированный пользователь рискует запустить этот код с меньшими привилегиями, он не сможет связываться со всей системой - только с вашими собственными файлами (что может быть одинаково плохо, в зависимости от того, как вы на это смотрите).

Что я часто делаю и рекомендую, так это установить Node в свой домашний каталог, а не глобально в системе, если это ваш собственный компьютер. Таким образом, вам не нужно бегать с sudo или же su за npm или даже для make install самого узла.

Я запускаю множество версий Node, которые я компилирую из исходников, иногда с разными ключами, и я использую соглашение для установки Node в версионных каталогах, либо глобально в /opt (но тогда тебе нужно sudo) или локально в моем домашнем каталоге в ~/opt,

Я делаю это так:

wget https://nodejs.org/dist/v7.1.0/node-v7.1.0.tar.gz
tar xzvf node-v7.1.0.tar.gz
cd node-v7.1.0
./configure --prefix=$HOME/opt/node-v7.1.0
make && make test && make install

Затем я создаю символическую ссылку ~/opt/node указывая на ~/opt/node-v7.1.0 и я имею:

PATH="$HOME/opt/node/bin:$PATH"

в моем .profile или же .bashrc,

Таким образом, мне не нужно запускать как суперпользователь для установки Node или для запуска npm.

В качестве бонуса я могу быстро переключить свою версию Node по умолчанию, просто изменив символическую ссылку, и в любое время я могу запустить любую другую версию, если я изменю PATH или запусту Node с полным путем, например ~/opt/node-v7.0.0/bin/node,

Я объяснил этот процесс установки более подробно в других моих ответах:

Я не хочу вдаваться в подробности, так как этот ответ о том, почему npm как суперпользователь не очень хорошая идея - этот процесс установки является лишь одним решением, чтобы не запускаться npm как суперпользователь.

Другие варианты установки разрешений npm, чтобы избежать работы в качестве суперпользователя, описаны в разделе Исправление разрешений npm в документах npm (спасибо RyanZim за то, что он указал это в комментариях).

Другие вопросы по тегам