Аналог групповых политик для Chromium в Linux
Традиционно большинство приложений в 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.
Всего через политики можно задать почти три сотни различных настроек, полный список которых можно найти на сайте 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!".
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.