Не устанавливайте npm пакеты через sudo

11

Если вы уже имели опыт использования nodejs, то скорей всего вам знакома следующая ситуация — при установке пакетов глобально консоль полна ошибок и пакет не устанавливается.

В этот момент вы читаете ошибки и там говорится о недостатке прав, и казалось бы эта проблема решается просто, надо только добавить sudo перед командой npm. Но так лучше не делать.

Если вы используете сервер с привилегиями root и его взломали через уязвимость вашего кода, злоумышленник будет иметь полный контроль над вашей машиной.

Чтобы избежать такой проблемы проще один раз настроить права на директории и пользоваться npm без рута.

Итак приступим:

Убеждаемся, что требуемые папки существуют (безопасны для выполнения, даже если они уже существуют)

sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share

Получаем права на папки назначения установки Node.js

sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share

Эти команды предельно просты. Они изменяют владельца перечисленных каталогов с root на вашего пользователя. Флаг -R означает «рекурсию», то-есть он изменяет право собственности на конкретный каталог и все каталоги и файлы внутри него.

Теперь можем использовать npm без sudo.