Новости SELinux

После выхода Halloween релиза SELinux, Dan Walsh сосредоточился на его интеграции с другими приложениями. Для начала, он добился включения изменения в coreutils версии 8.22, которое стандартизирует ключ командной строки "Z" без параметров, как средство для исправления меток. Dan рассказывает в своем блоге об изменении:

Традиционно, команда mv сохраняет настройки безопасности объекта, который перемещается - права доступа, владельца, и, что важно, SELinux метки. Проблема в том, что пользователи не ожидают такого поведения [в отношении SELinux], и теперь, добавив -Z пользователь может быть уверенным, что SELinux метки восстановятся. Именно этого юзеры и ожидали от команды. Т.е. добавление -Z к команде будет значить запуск restorecon после перемещения:

"mv -Z /tmp/foobar /etc/foobar" == "mv /tmp/foobar /etc/foobar; restorecon /tmp/foobar"

Одна из причин, почему мы не сделали это раньше, была скорость работы базы данных меток. Сейчас она значительно улучшена, и стало возможным реализовать это поведение.


Dan предлагает всем заинтересованным лицам добавить alias mv='mv -Z' куда-нибудь в ~/.bashrc. Типичной проблемой, которую пофиксит это изменение, было перемещение контента из директории пользователя (по умолчанию метка user_home_t) в /var/www или в иную директорию для Web-сервера, где файлы должны иметь метку, позволяющую http-серверу читать их. Мы уже тыщу раз давали совет по запуску sudo restorecon -r /var/www, после которого веб-сервер начинал работать. Еще одним важным моментом, на который надо обратить внимание, это то, что это изменение резко уменьшает вероятность возникновения race condition, возникавшего при последовательных операциях перемещения (например) и последующего восстановления SELinux меток другой утилитой. Теперь это делается в одной утилите.

Это изменение внесено не только в mv, но и в других утилитах coreutils, создающих файлы, т.е. в cp, touch, mknod, mkdir, mkfifo, install.

Как и все ключевые компоненты Linux и OSS, coreutils разрабатывается нашими коллегами, инженерами Red Hat, поэтому это изменение делалось с оглядкой на наши интересы, но не вызовет ли оно регрессию в дистрибутивах со специально ослабленными системами безопасности, такими как самосборные дистрибутивы, Ubuntu, Debian и ряда других? Dan уверяет - нет, все будет хорошо. Пользователи дистрибутивов с примитивными средствами безопасности могут использовать ключ -Z, и он будет просто игнорироваться.

У нас есть и еще одна новость от Dan. Он обеспечил работу SELinux и Docker, который недавно включили в Fedora, переделав ряд его решений, чтоб соответствовать высоким требованиям к архитектуре, предъявляемым клиентами Red Hat. Одно дело использовать Docker, чтоб по быстрому налепить сайтик-стартапик под убунточкой, чтоб дали денег на новый макбук, после чего забыть про линукс навсегда, а другое дело, это переносить с помощью Docker компоненты Enterprise архитектуры в облако, например гибридное (рост интереса к гибридным облакам входит в TOP-15 прогнозов на 2014й год от Red Hat). Тут и хранилище нужно посерьезнее, и SELinux включенный. Dan взялся за задачу, но с интересом увидел, что Docker написан на Go. Матерого ЦРУшника-программиста с 30-летним опытом работы какой-то там модный хипстерский язык остановить не может - Dan его освоил и написал необходимый код для работы контейнеров с SELinux.