Содержание статьи
Релизы Debian выходят хоть и чаще RHEL, но его манера выпуска одного релиза раз в два года по меркам большинства других дистрибутивов выглядит достаточно консервативно. Не так давно вышла восьмая его версия. Пришло время узнать, что же нового приготовили нам разработчики одного из старейших дистрибутивов Linux.
Введение
В основе восьмого Debian лежит следующее ПО:
- ядро 3.16 — не совсем ясно, почему не взяли LTS-версию ядра, но, возможно, в одном из минорных выпусков ситуация изменится;
- libc 2.19;
- GCC 4.9, в котором полноценно поддерживается стандарт C11 и язык Go;
- Samba 4.2 с поддержкой Active Directory;
- GNOME 3.14;
- LibreOffice 4.3;
- MariaDB 10.0.
Кроме того, после длительных дебатов Debian все же сделал systemd системой инициализации по умолчанию. Тем не менее при помощи манипуляций с preseed в некоторых случаях можно поставить старую добрую систему инициализации SysV. SSLv3 в Debian 8 отключен. Механизм же защиты от атак через симлинки, наоборот, включен по умолчанию. Также для предупреждения пользователей при досрочном окончании поддержки обновлений безопасности какого-либо пакета был создан механизм debian-security-support.
Перейдем наконец к собственно обзору.
Установка
В Debian, как, впрочем, и практически во всех дистрибутивах первого поколения, отсутствует режим Live CD. Это бы еще ничего, но по умолчанию в загрузочном меню предлагается запустить текстовую установку, что сейчас имеет смысл только в случае установки на сервер. Поскольку едва ли данный вариант несет в себе что-то новое, рассматривать его мы не будем, а выберем Graphical Install.
Xakep #197. Социальная инженерия
Загрузка от выбора пункта до появления первого экрана заняла где-то секунд семь. Первым экраном идет выбор языка. С первого взгляда можно отметить минималистичность программы установки, а также кнопку Screenshot. Наличие кнопки Go Back на первом экране, однако, несколько смущает — ее стоило бы сделать неактивной или хотя бы не создавать вид, что выбор языка — первый пункт, поскольку при нажатии на данную кнопку это оказывается не совсем так (появляется главное меню установщика, откуда, например, можно выйти в оболочку).
После выбора языка появится (уже локализованный) выбор страны проживания — в дальнейшем это будет учитываться при выборе часового пояса и локали. За исключением пары мелких языковых ляпов (запятая после «Обычно» и «другая» с маленькой буквы), тут придраться не к чему. Следом за выбором страны идет выбор раскладки клавиатуры. Здесь можно поспорить с переводчиком, но в целом претензий не возникает. Следующий шаг, выбор метода переключения раскладки клавиатуры, даже не имеет смысл комментировать.
Затем программа установки будет какое-то время подготавливать дополнительные компоненты и автоматически настраивать сеть — если есть DHCP-сервер. После этого будет предложено задать имя компьютера и затем домен.
Следующим шагом у нас идет задание пароля root. Разработчики придумали довольно интересное решение: пароль можно поставить — в этом случае все будет традиционно; но можно и не ставить — и тогда поведение будет убунтоподобным, то есть учетная запись root будет заблокирована, а для административных задач будет использоваться sudo. Следом же у нас идет создание обычного пользователя (полное имя, имя пользователя и пароль) на нескольких экранах. Данное решение выглядит достаточно странно — создается впечатление, что процедура установки искусственно растягивается. Впрочем, стоит предположить, что это атавизм, оставшийся от текстовой версии установщика. К слову, при выборе пароля его следовало бы проверять на стойкость и в случае чего предупреждать пользователя. Это сделано в некоторых других дистрибутивах, здесь же подобного, увы, не предусмотрено.
Далее будет выбор часового пояса. Это, пожалуй, первая увиденная мной программа установки, в которой нет километровых листингов часовых поясов, — при выборе страны все лишние убираются.
После часового пояса будем выбирать метод разметки жесткого диска. Здесь имеются три автоматических варианта («Весь диск», «Весь диск с LVM» и «Весь диск с зашифрованным LVM») и ручной. При первом варианте на следующем экране будет предложено выбрать диск. А вот следующий экран наводит некую ностальгию — как и во времена, скажем, Red Hat Linux 6.2 (не Enterprise!), предлагается указать схему разметки («Все файлы в одном разделе», «Отдельный раздел для /home» и «Отдельные разделы для /home, /var и /tmp»). По умолчанию, однако, предлагается первый вариант. В следующем окне программы установки уже будет показано, какие именно разделы будут созданы (в случае выбора первого варианта схемы разметки — корневой с файловой системой ext4 и swap, для двух гигабайт равный примерно половине). Это последний шаг, на котором разметку еще можно отменить, но на следующем экране у нас попросят еще раз подтвердить свое решение (вновь хотелось бы задаться вопросом об эргономике, ибо в данном случае достаточно было показать всплывающее окно).
Затем будет собственно разбиение и установка базовой системы, а на следующих экранах предложат вставить еще два DVD-диска для сканирования apt-get, если таковые диски имеются, и вновь вставить первый. Автоматически при этом они почему-то не обнаруживаются. Спустя какое-то время установщик начнет ставить еще одну часть системы, после чего будет предложено выбрать предустановленные наборы пакетов, в частности окружение рабочего стола. Отмечу, что если ничего не выбрано, то установится GNOME.
При включении всех трех основных DVD выявилась ошибка, которая привела к довольно печальным последствиям — сразу же после нажатия кнопки «Продолжить» начинается установка выбранного ПО, и почти в самом конце вдруг выясняется, что на этапе выбора произошла ошибка, и предлагается вернуться к данному шагу. При попытке же возврата все равно вылезает эта ошибка. После вдумчивого изучения причина была выявлена, и от дополнительных дисков пришлось отказаться. Однако, если дополнительных дисков нет, будет предложено получить некоторые пакеты из Сети. При согласии нужно будет указать зеркало, откуда качать, и прокси-серверы (в моей ситуации предпочтительным было зеркало Яндекса).
После установки пакетов будет предложено установить Grub. Проблем тут возникнуть не должно — разве что, если в системе более одного жесткого диска, нужно быть внимательнее. Последним же шагом будет завершение установки и предложение перезагрузить компьютер. Посмотрим, что приготовил нам данный релиз Debian.
INFO
Стандартный срок поддержки Debian Stable составляет около трех лет. Срок расширенной — около пяти.
Первые впечатления
После перезагрузки появится русифицированное меню Grub 2, аналогичное меню в Ubuntu. Далее будет отображено окно входа в систему, стандартное для третьего Гнома. Варианты входа — GNOME, классический GNOME и GNOME на Wayland. Взглянем на стандартный.
Видим уже ставший привычным девственно чистый рабочий стол с единственной кнопкой с надписью «Обзор». При нажатии на нее слева появится панель быстрого запуска. Все бы ничего, но названия программ, которые отображаются при наведении указателя мыши, обычному начинающему пользователю мало что говорят (за исключением «Справки»). В самом низу панели можно вызвать просмотр всех остальных установленных приложений.
Вместо хранителя экрана теперь присутствует экран блокировки, предоставляющий пользователю некоторые минимальные возможности — например, отображается уведомление о новой почте, можно остановить проигрываемую музыку и изменить яркость экрана.
В качестве браузера по умолчанию используется Iceweasel — форк Firefox, де-факто от последнего отличающийся разве что логотипом и использованием в качестве базы Firefox ESR. В нем по умолчанию не стоит ни Flash (что для лицензионной политики Debian более чем естественно), ни Java — хотя OpenJDK стоит.
В качестве email-клиента используется Evolution, также служащий и органайзером. Как и большинство аналогичных программ, он поддерживает автонастройку для некоторых серверов электронной почты. Основная его особенность — интеграция с Microsoft Exchange.
Empathy же используется в качестве IM-клиента. В нем есть поддержка как VoIP, так и старых добрых текстовых чатов (ICQ, Jabber и прочих). MP3 с недавних времен воспроизводится на ура. Видео тоже воспроизводится, так что с мультимедиа проблем быть не должно. В дистрибутив входит LibreOffice 4.3, в котором, в частности, появилась поддержка импорта и экспорта DrawingML, усовершенствован алгоритм сортировки и некоторые другие алгоритмы. Nautilus, в общем-то, ничем особым не выделяется — разве что во вкладке «Права» свойств файла/каталога есть возможность узнать контекст безопасности. Обзор сетей Windows работает без нареканий.
При запуске более одного окна консоли в переключателе окон () они отображаются как одно, что для привыкших к клавиатуре крайне неудобно. Из игр есть довольно много тех, которые в остальных дистрибутивах обычно по умолчанию не ставятся, — такие как шахматы (два варианта) и «Пять или больше».
Диски записываются с помощью Brasero, тесно интегрированного с GNOME и поддерживающего drag and drop. В качестве торрент-клиента выступает Transmission, к которому есть маленькое замечание — текст сообщения, появляющийся при первом запуске клиента, не локализован. А в остальном он не шибко отличается от аналогов. Synaptic, фронтенд для apt-get, входит в стандартную установку.
Управление сетевыми подключениями основано на NetworkManager, и фронтенд в GNOME поддерживает все его возможности.
Тут мы плавно переходим к тому, что кроется за ширмой графического интерфейса.
Бэкенд
В ядре 3.16, на котором основан Debian, появилась унифицированная иерархия cgroup. Ранее могло создаваться множество иерархий (одна для CPU, другая для blkio и так далее) и процесс мог находиться одновременно в нескольких. Это увеличивало гибкость, но приводило к излишним затратам ресурсов и создавало трудности при взаимодействии обработчиков различных иерархий. Стоит, однако, заметить, что UEFI Secure Boot в Debian не поддерживается.
Поскольку системой инициализации выбран systemd, это позволяет использовать некоторые предоставляемые им преимущества. Так, ранее каталог /tmp был публичным и в него мог писать любой процесс. Данное свойство вкупе с некоторыми ошибками разработчиков могло привести к атаке на те или иные демоны, в которых данные ошибки закрались. Появление systemd ввело поддержку PrivateTmp — у службы может быть отдельное пространство имен, подключенное к /tmp и не пересекающееся с другими такими же. Однако, несмотря на многие полезные вещи, systemd справедливо критикуется за изобретение велосипедов и чрезмерное разрастание функциональности. Кроме того, нужно отметить, что отдельные возможности, давно привычные по SysV, в systemd (пока) не реализованы или реализованы криво, — к ним относится, например, дополнительная конфигурация сервисов из /etc/default/.
От systemd практически неотделим новый демон логирования — journald. Одна из его примечательных особенностей — Forward Secure Sealing (FSS), позволяющая с помощью криптографических методов удостовериться, что файлы журналов не были изменены. Работает это таким образом: генерируется пара открытый/закрытый ключ, первое сообщение в логах подписывается именно закрытым ключом, затем этот ключ передается админу и уничтожается, а последующие логи с определенным интервалом хешируются, для каждого последующего хеша используется текущий хеш и открытый ключ. Таким образом, атакующий не сможет изменить записи в лог-файлах, свидетельствующие о проникновении, — он сможет лишь удалить файл журнала целиком, что, несомненно, будет замечено бдительным админом. При этом, однако, логи генерируются в двоичном формате и для их преобразования используется сервис rsyslogd, настроенный по умолчанию на запись файлов журналов в старом добром формате syslog.
В качестве файловой системы по умолчанию используется ext4, что выглядит слишком консервативным решением: данная ФС имеет унаследованные проблемы на архитектурном уровне, и может внезапно понадобиться (когда будут достигнуты пределы производительности) перейти на более новую ФС, что чревато трудностями.
В качестве брандмауэра используется iptables — несмотря на то что поддержка nftables в ядре присутствует, в базовую часть дистрибутива утилита управления nft не входит, и ее нужно ставить из репозиториев. Напомню, что nftables планируется как замена iptables; правила, написанные с его помощью, компилируются в байт-код и передаются в ядро. Это позволяет не только значительно улучшить гибкость, но и уменьшить количество кода ядра. Так, отпадает надобность в реализации расширений режима ядра для поддержки всякого вновь появляющегося протокола. В качестве же базовых кирпичиков выступают элементы старого доброго Netfilter, такие как хуки. Синтаксис самой утилиты управления отличается от синтаксиса iptables и представляет собой иерархический язык, более подходящий для описания правил, нежели линейный стиль последнего.
Правила именования сетевых интерфейсов остались прежними — с точки зрения совместимости это, разумеется, неплохо, однако в случае, когда вставлено более трех сетевых карт, может возникнуть путаница.
В качестве mandatory access control (MAC) по умолчанию не используется ничего. Но из репозиториев можно поставить хоть SELinux, хоть AppArmor, хоть гораздо менее известный TOMOYO. Имеется даже gradm2, используемый в качестве фронтенда к grsecurity — хотя и совершенно непонятно, зачем он нужен, ибо сам grsecurity в ядре отсутствует, а пакет linux-patch-grsecurity2 в репозитории содержит патч, требующий исходников ванильного ядра определенной версии.
LXC в репозиториях имеет версию 1.0.6, не самую новую даже в рамках версии 1.0. В нем, тем не менее, была усовершенствована поддержка непривилегированных контейнеров и внесены еще некоторые незначительные исправления. Также в Debian (в отличие от последней LTS-версии Ubuntu) нет проблем с логами ядра внутри контейнера. Конечно, туда зачастую пишется и то, что, в общем-то, знать владельцу контейнера не нужно, но логирование хотя бы работает.
OpenJDK 7 теперь является Javа-машиной по умолчанию. Tomcat 6 более не поддерживается.
В восьмой версии Debian появилась поддержка Wayland — нового графического сервера, которым в будущем планируется заменить древнего мамонта X.Org. В те времена, когда проектировался и создавался протокол X и его реализация (1984 год), графика состояла из таких примитивов, как растровые шрифты и линии. Данное тяжелое наследие, обогатившееся за все время еще много чем, есть и в современном сервере X.Org. Между тем значительная часть функциональности, имеющаяся в X-сервере, дублируется библиотеками и ядром Linux, что делает эту функциональность ненужной. Кроме того, X Window создавался с учетом сетевой прозрачности, которая сейчас для десктопных приложений не особо нужна, — а ведь за это приходится платить достаточно большую цену, поскольку многократное копирование всевозможных буферов — операция затратная. Wayland же реализует только те функции X-сервера, которые действительно нужны для современных рабочих столов. Однако текущая реализация Wayland немного сырая — в частности, проприетарные драйвер видеокарт ATI и NVIDIA не поддерживаются.
Debian GNU/Hurd
Практически одновременно с релизом Debian GNU/Linux, который мы привыкли называть просто Debian, вышел Debian GNU/Hurd, основанный на микроядре Hurd. Посмотрим, что в нем появилось.
- Самое значительное изменение опять же переход на новую систему инициализации. Только для Hurd это не systemd, а sysvinit, в чем видится некая ирония.
- Сетевые драйверы, работающие в пользовательском режиме, переписаны при помощи фреймворка NetDDE, позволяющего использовать код, взятый из ядра Linux; в качестве базы выступает ядро 2.6.32.
- Впервые запущен xfce; также под Hurd теперь работает и ESR-версия Iceweasel.
Если ты заинтересован в получении менее раздутого ядра, чем Linux, рекомендую обратить внимание на Debian GNU/Hurd.
Заключение
Debian — один из столпов дистрибутивостроения. Соответственно, от его стабильной версии ожидаешь того, что она будет работать как часы. И для десктопа это утверждение, в общем-то, верно — явных ошибок обнаружено не было, за исключением мелкого ляпа в GNOME 3. Набор приложений в целом стандартный. Однако в стандартной инсталляции их субъективно чуть больше, чем в остальных дистрибутивах данного класса.
Вот в качестве серверного дистрибутива Debian 8 выглядит несколько неподходяще — хотя бы из-за отсутствия LTS-версии ядра. Кроме того, интеграция systemd хоть и происходит глаже, чем в иных дистрибутивах, от идеала все же далека. Также стоит отметить, что за день до выпуска в багтрекере было достаточно много неисправленных ошибок, отмеченных как критические, а некоторые пакеты не вошли в основной репозиторий. Дистрибутив выглядит более всего подходящим для индивидуальных серверов и маленьких организаций, где не столь важна многолетняя поддержка дистрибутива. Для организаций среднего размера, однако, подошло бы что-нибудь более корпоративное (RHEL или, если начальство жадное, CentOS), поскольку три года поддержки сообществом кажется слишком малым сроком для того, чтобы ориентироваться на данный дистрибутив.
Ну а если на Debian держит привычка и есть опасения, что в новой версии что-то сломали, тут уж очень многое зависит от нужд. В целом же текущий тренд — переход на systemd, а с этой точки зрения выбор Debian или CentOS не имеет практически никакого значения.