Аналог групповых политик для Chromium в Linux

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Традиционно большинство приложений в Linux имеют два уровня настроек — системный и пользовательский. Системные настройки обычно размещаются в директории /etc; они задаются администратором на подконтрольных ему машинах либо приходят вместе с пакетами дистрибутива. Если пользователю эти настройки не подходят, он их изменяет (обычно с помощью самого приложения). Измененные настройки сохраняются в его домашний каталог, не влияя на других пользователей машины. При этом пользовательские настройки обладают более высоким приоритетом, чем системные — исходя из того, что пользователю лучше знать, что ему нужно, а Linux — дружелюбная пользователю ОС (старается ей быть, по крайней мере).

Однако бывают ситуации, когда пользователю надо «дать по рукам» и запретить менять некоторые настройки. Такие ситуации могут возникнуть и на домашней машине (например, если дети добрались до компьютера), а уж в корпоративном секторе — это дело обычное. Причем корпоративным регламентом могут быть охвачены вполне безобидные, на первый взгляд, параметры — домашняя страница браузера или используемая им по умолчанию поисковая система.

Для таких случаев требуется еще одно звено в цепочке настроек, которое было бы системным по своей сути (в том плане, что распространялось на всех пользователей системы и могло модифицироваться только администратором), но при этом имело бы приоритет больший, чем настройки пользователя. В Windows в роли такого звена выступают групповые политики (GPO), обычно задаваемые администратором домена AD и распространяемые на членов домена. В Linux, несмотря на существенный подвижки в плане интеграции с AD, прямого аналога GPO нет.

По большому счету, это и не нужно для низкоуровневых системных настроек, которые может изменять только администратор — например, набора подключенных репозиториев дистрибутива, используемых DNS-серверов и тому подобного. Но что делать с приложениями, системные настройки которых пользователь может переопределить своими собственными? Есть и здесь свет в конце тоннеля. По крайней мере, для отдельных программ, разработчики которых в курсе потребностей корпоративного сектора и знают, что там используются ОС не только от MS. И хороший пример здесь — браузер Chromium. Пример выше с настройками веб-браузера приведен не зря — в случае с Chromium, параметры такого рода можно намертво зафиксировать на уровне системы так, что пользователи не смогут их перебить.

Реализована такая возможность в Chromium очень просто — здесь предусмотрен системный файл настроек, данные из которго имеют приоритет выше, чем настройки пользователя. По сложившейся терминологии, такие настройки называют «политиками». Политики Chromium описываются файлами формата json, находящимися в директории /etc/chromium/policies. Политики делятся на обязательные (лежат в папке /etc/chromium/policies/managed) и рекомендуемые (/etc/chromium/policies/recommended соответсвенно). Рекомендуемые политики — это практически обычные системные настройки, которые пользователь может переопределять. А вот обязательные политики — это то, что нам нужно.

Для примера давайте зададим что-нибудь — например, список сайтов, которые Chromium должен блокировать. Все действия нужно производить с правами root; также не забывайте следить, чтобы у обычных пользователей не было прав на запись в создаваемые файлы.

Для начала, создадим нужную папку, если ее еще нет:

# mkdir -p /etc/chromium/policies/managed

А внутри нее создадим файл test_policy.json со следующим содержимым:

{
  "URLBlacklist": ["example.com", "enemy-site.com"],
}

А теперь закройте Chromium, если он уже работает, запустите его снова и попробуйте перейти на сайт example.com.

Chrome block.png

Всего через политики можно задать почти три сотни различных настроек, полный список которых можно найти на сайте Chromium. Также Google предоставляет архив с шаблонами политик, куда входит и json-файл для Linux с аннотированными именами политик и их возможными значениеями.

Список политик, используемых в данный момент броузером, можно получить по ссылке chrome://policy.

Как и прочие файлы конфигурации, json-файлы с политиками Chromium можно распространить по папкам /etc/chromium/policies целого парка машин с помощью Puppet, CFEngine и подобных программ управления конфигурацией.


Chromium — не единственный пример приложения, поддерживающий системные настройки, которые не могут быть переопределены пользователем. Например, OpenOffice уже много лет поддерживает такой функционал. Правда, там разработчики пошли немного другим путем и добавили возможность для каждой опции в системном конфигурационном файле указать атрибут finalized, который и означает, что значение «окончательное и переопределению не подлежит». В случае OOo такой подход вполне логичен — файлы конфигурации Open/LibreOffice (с расширением «.xcu») имеют формат XML, где каждое свойство задается отдельным элементом. Наличие дополнительного атрибута элемента в такую архитектуру хорошо вписывается. Правда, редактировать XML-файлы вручную — то еще удовольствие. На FOSDEM 2014 разработчики из Collabora демонстрировали на слайдах графическую программу для редактирования файла настроек LibreOffice, а заодно и инструмент RemoteRoot для удаленного управления множеством машин (в частности, для доставки на них пакетов и конфигураций LO) — еще одно приложение из серии Puppet & co. Однако пока что многие из представленных там возможностей можно посмотреть только в рамках слайдов. Так, на сайте «remoteroot.org» в разделе «Downloads» уже второй год красуется сообщение «Very soon, please be patient!».

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.