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

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

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

11 сентября 2007 года


Задача

Требуется настроить рабочее место пользователя 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>