Ограничения интерфейса KDE
Настройка ограничений на возможности среды KDE посредством механизма Kiosk
11 сентября 2007 года
Задача
Требуется настроить рабочее место пользователя KDE в соответствии со следующими условиями:
- разрешена работа с файлами только из домашнего каталога;
- настройка всех остальных параметров рабочего стола (в том числе и изменение меню) запрещена;
- меню KDE должно состоять из фиксированного минимального набора приложений и специального пункта для остальных установленных программ, куда попадают все вновь установленные программы.
Режим Kiosk
Графическая среда KDE предоставляет возможности по административному ограничению её возможностей и настройки параметров. Это стало возможно с появлением в KDE3 механизма Kiosk. Данный режим включен по умолчанию.
С помощью этого режима можно:
- Использовать только заданные параметры, игнорируя изменения как в диалогах настройки, так и в конфигурационных файлах пользователя;
- Скрыть от пользователей модули центра управления KDE;
- Отключить переназначение ресурсов (например, значков) из домашнего каталога пользователя;
- Запретить в приложениях KDE просмотр папок и открытие файлов, не удовлетворяющих заданным условиям (например, вне домашнего каталога пользователя);
- Назначать разные профили группам или отдельным пользователям.
Для настройки можно использовать утилиту kiosktool или указать правила вручную.
Управление через kiosktool
- установите пакет kiosktool:
- apt-get install kiosktool
- Запустите kiosktool (можно под обычным пользователем)
- Нажмите кнопку «Добавить новый профиль». На этом этапе создаётся отдельный профиль, содержащий политики безопасности.
- Имя профиля: user
- Файлы в этом профиле принадлежат: root
- Каталог для этого профиля: /etc/kde-profile/user
- Нажмите на кнопку «Добавить». При этом появится запрос пароля пользователя root. Укажите пароль и нажмите OK.
- Нажмите на кнопку «Назначенные профили». На этом этапе происходит назначение профилей отдельным пользователям и группам. Нажмите на кнопку «Добавить групповую политику» (назначение профиля группе) или «Добавить пользовательскую политику» (назначение профиля отдельному пользователю). Выберите группу (или пользователя и укажите присваиваемый профиль. Нажмите на OK и Готово.
- Укажите необходимые правила для профиля, нажав на кнопку «Настроить профиль»
Как это работает
- Профили хранятся в каталоге /etc/kde-profile/<имя_профиля> и представляют собой структуру и содержимое файлов с заданными параметрами (как в ~/.kde/)
- Блокировка параметров ключом [$i] может быть следующих видов:
- один параметр: someKey[$i]=value
- группа: [MyGroup][$i]
- весь файл: [$i] указывается в первой строке файла
Если параметр не указан как изменяемый (на уровне файла, группы или отдельного параметра, пользователь может изменять его как в диалоге настройки, так и вручную (при этом изменения самих программ будут произведены). Запрещённое для изменения действие будет исключено из меню и панели инструментов. Также можно запретить изменение параметров, сделав файл недоступным на запись. Чтобы убрать предупреждение о невозможности их записи, добавьте в файл /etc/kde-profile/<имя_профиля>/share/config/kdeglobals (этот файл используется для всех ниже указанных вариантов):
- [KDE Action Restrictions]
- warn_unwritable_config=false
- Для блокирования отдельных действий, добавьте в файл /etc/kdeprofile/<имя_профиля>/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
Нерешённые проблемы
- Фон рабочего стола можно изменить через dcop. Для этого снимите биты выполнения для определённых групп для программ: dcop и kdcop.
- Невозможно скрыть заблокированные параметры в пользовательских приложениях. Это неудобно для пользователя, так как параметры видны, но после их изменения, приложение не учитывает изменения.
Фиксированное меню
Для создания фиксированного меню с минимальным набором приложений создаётся файл /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>