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

23 февраля 2018 года

<dynamicpagelist>

category = Опубликовано category = Компьютерные технологии notcategory = Не публиковать notcategory = Ожидаемые события по датам notcategory = Архивные новости notcategory=Викиновости коротко count = 18 stablepages = only suppresserrors = true namespace = Main addfirstcategorydate = true ordermethod = created </dynamicpagelist>

Wikinews-logo-ru.svg

В опубликованном вчера выпуске пакетного менеджера NPM 5.7.0 выявлена серьёзная проблема, которая может привести к нарушению нормальной работы компонентов операционной системы. При запуске 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 были помечены как экспериментальные и не доставлялись через каналы обновления стабильных релизов. При этом на сайте анонс был опубликован в форме, не отличающейся от объявлений стабильных релизов, что ввело в заблуждение некоторых пользователей, которые попытались перевести на NPM 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

 

ИсточникиПравить


Эта статья содержит материалы из статьи «Критическая проблема в NPM 5.7, приводящая к смене прав доступа на системные каталоги», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

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