Ограничения интерфейса KDE

Материал из ALT Linux Wiki


Настройка ограничений на возможности среды KDE посредством механизма Kiosk


Задача

Требуется настроить рабочее место пользователя KDE в соответствии со следующими условиями:

  • разрешена работа с файлами только из домашнего каталога;
  • настройка всех остальных параметров рабочего стола (в том числе и изменение меню) запрещена;
  • меню KDE должно состоять из фиксированного минимального набора приложений и специального пункта для остальных установленных программ, куда попадают все вновь установленные программы.

Режим Kiosk

Графическая среда KDE предоставляет возможности по административному ограничению её возможностей и настройки параметров. Это стало возможно с появлением в KDE3 механизма Kiosk. Данный режим включен по умолчанию.

С помощью этого режима можно:

  1. Использовать только заданные параметры, игнорируя изменения как в диалогах настройки, так и в конфигурационных файлах пользователя;
  2. Скрыть от пользователей модули центра управления KDE.
  3. Отключить переназначение ресурсов (например, значков) из домашнего каталога пользователя.
  4. Запретить в приложениях KDE просмотр папок и открытие файлов, не удовлетворяющих заданным условиям (например, вне домашнего каталога пользователя).
  5. Назначать разные профили группам или отдельным пользователям.

Для настройки можно использовать утилиту kiosktool или указать правила вручную.

Управление через kiosktool

  • установите пакет kiosktool:
apt-get install kiosktool
  • Запустите kiosktool (можно под обычным пользователем)
  • Нажмите кнопку «Добавить новый профиль». На этом этапе создаётся отдельный профиль, содержащий политики безопасности.
  • Имя профиля: user
  • Файлы в этом профиле принадлежат: root
  • Каталог для этого профиля: /etc/kde-profile/user
  • Нажмите на кнопку «Добавить». При этом появится запрос пароля пользователя root. Укажите пароль и нажмите OK.
  • Нажмите на кнопку «Назначенные профили». На этом этапе происходит назначение профилей отдельным пользователям и группам. Нажмите на кнопку «Добавить групповую политику» (назначение профиля группе) или «Добавить пользовательскую политику» (назначение профиля отдельному пользователю). Выберите группу (или пользователя и укажите присваиваемый профиль. Нажмите на OK и Готово.
  • Укажите необходимые правила для профиля, нажав на кнопку «Настроить профиль»

Как это работает

  • Профили хранятся в каталоге /etc/kde-profile/<имя_профиля> и представляют собой структуру и содержимое файлов с заданными параметрами (как в ~/.kde/)
  • Блокировка параметров ключом [$i] может быть следующих видов:
    1. один параметр: someKey[$i]=value
    2. группа: [MyGroup][$i]
    3. весь файл: [$i] указывается в первой строке файла

Если параметр не указан как изменяемый (на уровне файла, группы или отдельного параметра, пользователь может изменять его как в диалоге настройки, так и вручную (при этом изменения самих программ будут произведены). Запрещённое для изменения действие будет исключено из меню и панели инструментов. Также можно запретить изменение параметров, сделав файл недоступным на запись. Чтобы убрать предупреждение о невозможности их записи, добавьте в файл /etc/kde-profile/<имя_профиля>/share/config/kdeglobals (этот файл используется для всех ниже указанных вариантов):

[KDE Action Restrictions]
warn_unwritable_config=false
  • Для блокирования отдельных действий, добавьте в файл /etc/kde­profile/<имя_профиля>/share/config/kdeglobals строку (для примера запрещается создание папки в диалоге открытия/сохранения файла):
action/<действие>=false
  • Список действий можно получить командой:

dcop <dcopid> qt objects | grep KActionCollection/ | cut -d '/' -f 3 или dcop <dcopid> <maindwindowid> actions

  • Можно отключить модули управления из Центра управления KDE (на примере запрещения изменения фона рабочего стола):

[KDE Control Module Restrictions] kde-background.desktop=false

  • Можно отключить определённые пути (в том числе сетевые) (пример разрешает открывать только файлы из домашнего каталога пользователя):

[KDE URL Restrictions][$i] rule_1=list,,,,file,,,false rule_2=list,,,,file,,$HOME,true

  • Можно отключить использование пользовательских ресурсов (пример запрещает использование фона рабочего стола из домашнего каталога пользователя

[KDE Resource Restrictions][$i] wallpaper=false

Нерешённые проблемы

  1. Фон рабочего стола можно изменить через dcop. Для этого снимите биты выполнения для определённых групп для программ: dcop и kdcop.
  2. Невозможно скрыть заблокированные параметры в пользовательских приложениях. Это неудобно для пользователя, так как параметры видны, но после их изменения, приложение не учитывает изменения.

Фиксированное меню

Для создания фиксированного меню с минимальным набором приложений создаётся файл /etc/kde/xdg/menus/applications-merged/junior.menu следующего содержимого:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
 <Move>
  <Old>Graphics</Old>
  <New>Applications/Graphics</New>
 </Move>
 <Move>
  <Old>Games</Old>
  <New>Applications/Games</New>
 </Move>
 <Move>
  <Old>Internet</Old>
  <New>Applications/Internet</New>
 </Move>
 <Move>
  <Old>Multimedia</Old>
  <New>Applications/Multimedia</New>
 </Move>
 <Move>
  <Old>Science</Old>
  <New>Applications/Science</New>
 </Move>
 <Move>
  <Old>Edutainment</Old>
  <New>Applications/Edutainment</New>
 </Move>
 <Move>
  <Old>Office</Old>
  <New>Applications/Office</New>
 </Move>
 <Move>
  <Old>Development</Old>
  <New>Applications/Development</New>
 </Move>
 <Move>
  <Old>Utilities</Old>
  <New>Applications/Utilities</New>
 </Move>
 <Move>
  <Old>Settingsmenu</Old>
  <New>Applications/Settingsmenu</New>
 </Move>

    <Menu>
        <Name>Graphics1</Name>
        <Directory>kde-graphics.directory</Directory>
        <Include>
            <Filename>kde-kuickshow.desktop</Filename>
            <Filename>blender.desktop</Filename>
            <Filename>inkscape.desktop</Filename>
            <Filename>gimp.desktop</Filename>
            <Filename>kde-kooka.desktop</Filename>
            <Filename>tuxpaint.desktop</Filename>
        </Include>
    </Menu>
    <Menu>
        <Name>Internet1</Name>
        <Directory>kde-internet.directory</Directory>
        <Include>
            <Filename>xchat.desktop</Filename>
            <Filename>psi.desktop</Filename>
            <Filename>firefox.desktop</Filename>
            <Filename>thunderbird.desktop</Filename>
            <Filename>kde-konqbrowser.desktop</Filename>
        </Include>
    </Menu>
    <Menu>
        <Name>Multimedia1</Name>
        <Directory>kde-multimedia.directory</Directory>
        <Include>
            <Filename>kde-kaffeine.desktop</Filename>
            <Filename>kde-amarok.desktop</Filename>
            <Filename>kde-kmix.desktop</Filename>
            <Filename>audacity.desktop</Filename>
        </Include>
    </Menu>
    <Menu>
        <Name>Edutainment1</Name>
        <Directory>kde-edutainment.directory</Directory>
        <Include>
            <Filename>kde-kturtle.desktop</Filename>
        </Include>
    </Menu>
    <Menu>
        <Name>Office1</Name>
        <Directory>kde-office.directory</Directory>
        <Include>
            <Filename>oobase.desktop</Filename>
            <Filename>oocalc.desktop</Filename>
            <Filename>oowriter.desktop</Filename>
            <Filename>oomath.desktop</Filename>
            <Filename>oodraw.desktop</Filename>
            <Filename>ooimpress.desktop</Filename>
            <Filename>scribus.desktop</Filename>
            <Filename>kde-korganizer.desktop</Filename>
            <Filename>stardict-gtk.desktop</Filename>
            <Filename>dia.desktop</Filename>
            <Filename>kpdf.desktop</Filename>
        </Include>
    </Menu>
   <Menu>
        <Name>Development</Name>
        <Directory>kde-development.directory</Directory>
        <Include>
            <Filename>kdevelop.desktop</Filename>
            <Filename>lazarus.desktop</Filename>
            <Filename>gambas.desktop</Filename>
            <Filename>kde-umbrello.desktop</Filename>
            <Filename>kde-quanta.desktop</Filename>
        </Include>
    </Menu>
    <Menu>
        <Name>Utilities1</Name>
        <Directory>kde-utilities.directory</Directory>
        <Include>
            <Filename>kde-kcalc.desktop</Filename>
            <Filename>kde-konsole.desktop</Filename>
            <Filename>alt-midnight_commander.desktop</Filename>
            <Filename>kde-k3b.desktop</Filename>
            <Filename>kde-kwrite.desktop</Filename>
            <Filename>kde-KCharSelect.desktop</Filename>
        </Include>
    </Menu>
    <Menu>
        <Name>Settingsmenu1</Name>
        <Directory>kde-settingsmenu.directory</Directory>
        <Include>
            <Filename>alterator-standalone.desktop</Filename>
            <Filename>alterator-configd.desktop</Filename>
            <Filename>kde-KControl.desktop</Filename>
            <Filename>synaptic.desktop</Filename>
            <Filename>kde-ksysguard.desktop</Filename>
            <Filename>kde-kinfocenter.desktop</Filename>
            <Filename>kde-KFloppy.desktop</Filename>
            <Filename>kde-kkbswitch.desktop</Filename>
        </Include>
    </Menu>
</Menu>