Критическая проблема в NPM 5.7, приводящая к смене прав доступа на системные каталоги

В oпубликoвaннoм вчeрa выпускe пaкeтнoгo мeнeджeрa NPM 5.7.0 выявлeнa сeрьёзнaя прoблeмa, кoтoрaя мoжeт привeсти к нaрушeнию нoрмaльнoй рaбoты кoмпoнeнтoв операционной системы. Подле запуске npm с использованием утилиты sudo (неважный (=маловажный) важно, какая команда выполняется, удовлетворительно запустить "sudo npm --help" или "npm update -g") рекурсивно меняются карт-бланш доступа на каталоги, относительно корневого префикса npm. Клеймящий по отчётам пострадавших пользователей, по прошествии подобного изменения могут возникнуть проблемы с загрузкой операционной системы и работой локальных приложений. Заколупка проявляется только при запуске npm с использованием утилиты sudo. Быть запуске с применением sudo вместо root в качестве владельца с целью системных каталогов, включая всё содержание /etc, /usr и /boot, устанавливается текущий непривилегированный юзер. Источником проблемы стал переход версии 5.7.0 получай новую реализацию mkdir, сохраняющую исходные полномочия доступа и владельца при запуске с правами root с использованием sudo. Загвоздка уже решена в обновлении 5.7.1. Массовых проблем посчастливилось избежать благодаря тому, что в репозитории выпуски npm 5.7.x были помечены ни дать ни взять экспериментальные и не доставлялись через каналы обновления стабильных релизов. Около этом на сайте анонс был опубликован в форме, безвыгодный отличающейся от объявлений стабильных релизов, в чем дело? ввело в заблуждение некоторых пользователей, которые попытались истребить на RPM 5.7 свои рабочие системы. Вот и все интересно, что сообщение об ошибке с описанием проблемы было отправлено вслед за неделю до релиза 5.7.0, да осталось без внимания разработчиков. В случае отсутствия резервной копии пользу кого восстановления всех изначальных прав доступа может понадобиться переустановка системы или восстановление прав бери уровне пакетного менеджера с ручной корректировкой каталогов пользователей. А именно, можно выполнить: RPM: for p in $(rpm -qa); do rpm --setperms $p; do rpm --setugids $p; done DEB: dpkg --get-selections | grep install | grep -v deinstall | cut -f1 | xargs apt-get --reinstall -y --force-yes install FreeBSD: mtree -U -f /etc/mtree/BSD.root.dist mtree -U -f /etc/mtree/BSD.var.dist mtree -U -f /etc/mtree/BSD.include.dist mtree -U -f /etc/mtree/BSD.sendmail.dist mtree -U -f /etc/mtree/BSD.usr.dist Начало: http://www.opennet.ru/opennews/art.shtml?num=48125