KDE — режим Kiosk

KDE Kiosk Mode — Caleb Tennis
Переклав: ?Іван Петрущак
Оригінал: KDE Kiosk tutorial

Вступ

Одна з сильніших сторін стільниці KDE — це здатність повного контролю над виглядом та поведінкою у представленні стільниці для кінцевого користувача. Більшість програм KDE використовують функціональність серцевини та втулки надані стільничною системою, створюючи устійнений інтерфейс користувача та легке для доступу налаштування. Одне популярне розширення до цього інтерфейсу, відоме як KDE в режимі Kiosk, дає змогу системним адміністраторам налаштувати всі аспекти стільниці для кінцевого користувача та, при необхідності, запобігти спробам кінцевого користувача змінити надане налаштування.

Програми KDE користуються конфігураційною системою подібною до INI-файлів в Microsoft Windows. Одна перевага цього типу файлів — це простота прямого ручного редагування конфігураційного файла адміністратором або користувачем. Формат INI-файла — простий текстовий файл, який розділений на менші секції з назвами, кожна секція має одну або більше пар ключ/значення. Ці значення напряму використовуються і зберігаються програмами:

  ...
  [НазваГрупи]
  ключ=значення
  ключ2=значення2
  ...

Конфігураційні файли містяться в декількох місцях, а це, переважно, залежить від вашого дистрибутиву. Коли програма намагається знайти свою конфігурацію, вона проводить пошук у заздалегідь визначеному порядку. Список каталогів, у яких проводиться пошук, можна отримати при виконанні команди kde-config --path config. Насправді, показані каталоги «обшукуються» в порядку зворотному до того, у якому вони перелічені. Цей порядок пошуку підкоряється наступній групі правил:

  1. /etc/kderc: шлях пошуку в каталогах може бути вказано в цьому файлі.
  2. KDEDIRS: стандартна змінна середовища, яка наставлена, щоб вказувати програмам KDE розміщення каталогів встановлених бібліотек та програм KDE. Найімовірніше, їх вже встановлено при вході в систему. Каталог, де встановлено KDE, автоматично додається до цього списку, якщо його ще там немає.
  3. KDEDIR: колишня змінна середовища, яку тепер замінено на KDEDIRS. Якщо KDEDIRS наставлено, то для налаштування KDEDIR ігнорується.
  4. Каталог файла програми, яка виконується
  5. KDEHOME або KDEROOTHOME: переважно, наставлено до ~/.kde. Перше -- для всіх користувачів, а друге — для root.

Конфігураційні файли зберігаються в дереві каталогів, які закінчуються на /share/config. Таким чином, до каталогу змінної середовища (напр., KDEHOME) додається /share/config для створення назви каталогу конфігураційного файла.

Коли програма дає запит на отримання своєї конфігураційної інформації, KDE проводить пошук у всіх вищезгаданих каталогах за файлами, які йдуть з програмою, і об'єднує їх всіх в один конфігураційний об'єкт для цієї програми. Інформація об'єднується на основі «ключ-за-ключем» — будь-які конфлікти отримують значення, яке було прочитане в ланцюжку останнім. Оскільки файли KDEHOME завжди читаються останніми, тому будь-які локальні зміни у файлі, зроблені користувачем, будуть завжди перезаписувати значення в інших конфігураційних файлах. Ось чому каталоги у виводі команди kde-config показано в зворотньому порядку — їх перелічено в порядку пріоритету конфігураційних файлів, які вони в собі містять.

Оскільки значення конфігураційного файла спадають вниз каскадом, системні адміністратори можуть заздалегідь наставити деякі конфігураційні значення в каталозі верхнього рівня, які б використовувались як типові для всіх користувачів або, принаймні, доки користувачі не зроблять змін. Наприклад, якщо системний адміністратор хотів наставити типові шпалери для всіх користувачів, доки користувачі не внесли свої зміни, просте редагування файла kdesktoprc в каталозі конфігурації верхнього рівня здійснить це бажання:

  [Desktop0]
  ...
  Wallpaper=/usr/kde/3.3/share/wallpapers/якісьшпалери.jpg
  ...

Одна з функцій KDE в режимі Kiosk — це спроможність заблокувати значення конфігураційних файлів, які було прочитано у ланцюжку раніше, так що значення прочитані пізніше не зможуть їх перезаписати. Ця функціональність дає змогу системним адміністраторам не тільки заздалегідь наставити певні конфігураційні елементи, але й заблокувати ці елементи, щоб кінцеві користувачі не могли вносити свої зміни. Блокування конфігураційних значень у такий спосіб є дуже простою справою.

Припустимо, адміністратор хоче заблокувати налаштування програми Konqueror, щоб пенал навігації завжди містив тільки текстові кнопки. Пошук у файлі $KDEHOME/share/config/konquerorrc дає наступну інформацію:

  ...
  [KonqMainWindow Toolbar mainToolBar]
  IconText=TextOnly
  ...

Цей конфігураційний елемент вказує, щоб Konqueror замість піктограм в головному пеналі використовував текст. Змінити це значення в програмі Konqueror дуже просто — клацніть правою кнопкою мишки на пенал Konqueror і виберіть елемент меню «Розташування тексту», щоб перемкнути параметри. Мал. 1 і 2 показують різницю між пеналами з текстом та піктограмами:

Мал. 1. Головний пенал Konqueror з параметром TextOnly

Мал. 2. Головний пенал Konqueror з параметром IconOnly

Щоб заблокувати це значення для користувачів, адміністратор просто може створити або змінити konquerorrc в конфігураційному каталозі вищого рівня. Щоб зробити це значення незмінним, просто змініть файл як показано нижче:

  [KonqMainWindow Toolbar mainToolBar]
  IconText[$i]=TextOnly

Мітка [$i] вказує, що це значення є незмінним, а це значить, що програма Konqueror повинна використовувати це конфігураційне значення й не об'єднувати із значеннями з каталогів нижчого рівня, які б, зазвичай, перезаписали цей параметр. Жодний конфігураційний файл, що знаходиться нижче в структурі конфігураційних каталогів, і який містить групу [KonqMainWindow Toolbar mainToolBar], не може перезаписати значення IconText.

Після збереження цього файла і перезапуску Konqueror жодні зміни до «Розташування тексту» в пеналі навігації не будуть зберігатись між перезапусками програми Konqueror. Це тому, що значення було заблоковане в конфігураційному каталозі верхнього рівня, щоб його не можна було перезаписати в каталозі нижчого рівня. В ширшому масштабі, цілі групи налаштувань можуть бути позначені як незмінні. Позначення групи незмінною робить всі її значення також незмінними. Наприклад, в конфігураційному файлі програми KCalc kcalcrc:

  ...
  [Precision][$i]
  fixed=true
  precision=12
  ...

Запуск програми калькулятора kcalc з групою Precision позначеною як незмінною унеможливлює зміну цих значень. Мал. 3 і 4 показують різницю між заблокованими та незаблокованими параметрами точності (Precision) програми kcalc.

Мал. 3. Вікно загальних параметрів програми kcalc з заблокованими параметрами точності

Мал. 4. Вікно загальних параметрів програми kcalc з незаблокованими параметрами точності

Нарешті, цілий конфігураційний файл для програми можна зробити незмінним помістивши [$i] в самому верху файла. Цей знак незмінності охоплює всі групи та пари ключ/значення, які містяться у файлі. Зробивши конфігураційний файл, у такий спосіб, незмінним, буде заборонено внесення будь-яких змін в налаштування програми.

Альтернативний підхід: якщо програма KDE не має прав запису в конфігураційний файл, цей файл також може рахуватись незмінним конфігураційним файлом. Це обмеження доступу може бути наставлено прямо на конфігураційних файлах в каталозі KDEHOME, щоб запобігти редагуванню конфігурації користувачами.

Наприклад, збереження файла kickerrc «тільки для читання» не дає змогу користувачам вносити зміни в панель kicker. Багато інших програм KDE дотримуються подібної процедури, хоч може вимагатись перезапуск програм для того, щоб вони могла прочитати свою нову конфігурацію.

Мал 5. Панель, конфігураційний файл якої, позначений як незмінний. Відсутні держаки, за допомогою яких можна змінювати аплети панелі.

Мал 6. Звичайна панель.

Обмеження дій

На додачі до можливості блокування конфігураційних елементів для користувачів, адміністратори також можуть вилучити функціональність певних дій доступних користувачам. Дія - це просто щось, що може бути виконано користувачем, напр., Файл→Новий. Оскільки більшість програм KDE надають спільні (однакові) дії, заздалегідь визначені стандартні дії можна легко обмежити блокуванням. Обмеження дій програм налаштовуються у файлі kdeglobals, який міститься у тій самій структурі конфігураційних каталогів описаних вище.

Наступний код вимикає стандартне меню Довідки в головному пеналі програм KDE:

  ...
  [KDE Action Restrictions][$i]
  action/help=false
  ...

Мал. 7. Konqueror з Довідкою

Мал. 8. Konqueror без Довідки

Інша можливість -- вимкнення Закладок в Konqueror. Це можна зробити наступним чином:

  ...
  [KDE Action Restrictions][$i]
  action/bookmarks=false
  ...

Можна обмежувати дії не тільки елементів меню. Наприклад, наступне вимикає всі функції, які потребують адміністративний (root) доступ:

  ...
  [KDE Action Restrictions][$i]
  user/root=false
  ...

Можна налагодити багато інших дій. Більш повний список можна знайти в документації для kiosk. Багато дій є стандартними для всіх програм KDE. Однак, деякі програми, надають свої власні локальні дії, доступ до яких також можна обмежувати. Перелічимо деякі цікаві дії:

  • print/system: вимикає можливість вибирати систему друку.
  • shell_access: вимикає можливість запускати командну оболонку
  • logout: не дозволяє вихід з системи.
  • run_command: вимикає виконання команд через Alt-F2
  • lineedit_text_completion: не дозволяє, щоб поля вводу пам'ятали попередньо введений текст через завершення

Обмеження інших ресурсів

Окрім конфігураційних файлів, програми KDE використовують інші типи ресурсів в каталогах KDEDIRS. Подібно до прикладів конфігураційних файлів, наведених вище, ці ресурси надають доступ через ресурсові файли встановлені в KDEHOME. KDE дає можливість також обмежити доступ до цих типів файлів. Ця конфігураційна інформація зберігається в конфігураційному файлі kdeglobals. Наприклад, наступний уривок з kdeglobals обмежує здатність користувача додавати або використовувати нетипові набори піктограм, окрім тих, що вже існують в ресурсному каталозі верхнього рівня:

  ...
  [KDE Resource Restrictions][$i]
  icon=false
  ...

[В табл. 1 показано список типів ресурсів визначених в KDE.] | Тип ресурсу | Адреса | | :---------------------- | :--------------------------------------------------------------------- | | apps | share/applnk | | config | share/config | | data | share/apps | | exe | bin | | html | share/doc/HTML | | icon | share/icon | | lib | lib | | locale | share/locale | | mime | share/mimelnk | | pixmap | share/pixmaps | | services | share/services | | servicetypes | share/servicetypes | | sound | share/sounds | | templates | share/templates | | wallpaper | share/wallpapers | | xdgdata-apps | share/applications |

Обмеження Центру керування

Хоч меню Центру керування можна видалити, однак користувачі ще будуть мати змогу міняти параметри. Обмеження Центру керування можна наставити, щоб користувачі не могли робити багато глобальних системних змін.

Наступна секція в kdeglobals забороняє доступ користувачів до відповідних модулів керування. Повний список модулів можна отримати виконавши команду kcmshell --list:

  ...
  [KDE Control Module Restrictions][$i]
  kde-crypto.desktop=false
  kde-clock.desktop=false
  ...

Обмеження URL

KDE even provides the ability to restrict URLs entered into Konqueror or another program using KDE's internal URL libraries. To block URL access to a specific Web site, use the following in kdeglobals:

  ...
  [KDE URL Restrictions][$i]
  rule_count=n
  rule_1=open,,,,http,example.com,,false
  rule_2=open,,,,file,,/mnt/share,false
  rule_3=list,,,,file,,/mnt/cdrom,true
  ...
  rule_n=...
  ...

Формат правил: rule_N=<дія>,<протокол надісланого>,<вузол надісланого>,<шлях надісланого>,<протокол URL>,<вузол URL>,<шлях URL>,<увімкнено>. Параметр, який явно не вказано типово співпадає з усіма значеннями.

Вище, перше правило забороняє користувачам доступ до веб-майданчика example.com. Друге правило блокує, щоб користувач не міг відкривати або зберігати файли в каталозі /mnt/share. Третє правило блокує, щоб користувачі навіть не могли бачити перелік файлів в каталозі /mnt/cdrom.

Наступні правила забороняють, щоб користувачі з'єднувались з певними доменами через http, натомість примушуючи їх використовувати https:

  ..
  [KDE URL Restrictions][$i]
  rule_count=2
  rule_1=open,,,,http!,*example.com,,false
  rule_2=open,,,,https,*example.com,,true
  ..

Умова обмеження доступу до URL полягає в співпаданні протоколів з подібними назвами, таким чином правило для http також стосується і https. В прикладі, наведеному вище, http! використовується для того, щоб воно співпадало тільки з http, а не https.

Засіб Kiosk для KDE

Недавня праця по автоматизації середовища kiosk привела до створення Засобу адміністрування Kiosk (Kiosk Admin Tool). Ця програма автоматизує адміністрування багатьох додаткових функцій kiosk, які підтримуються в KDE. Адміністратор може налагодити багато, описаних в цій статті, елементів за допомогою Засобу адміністрування Kiosk без ручного редагування конфігураційних файлів. Засіб адміністрування Kiosk також дає можливість адміністратору створювати декілька профілів для kiosk, зберігати й редагувати профілі на центральному комп'ютері і поширювати конфігураційну структуру через мережу за допомогою протоколу SSH. Хоч цей засіб ще не підтримує всі можливі конфігураційні значення, які піддаються налаштуванню, однак майбутні версії додадуть більше можливостей.

Мал. 9. Засобу адміністрування Kiosk дає адміністратору змогу створювати і впроваджувати конфігурації Кіоску.

Підсумок

Використовуючи додаткові можливості надані структурою KDE Kiosk, вигляд та поведінку стільниці можна повністю контролювати. Чи це адміністрування багатьох робочих станцій, чи просто приготування типової конфігурації для нових користувачів, адміністратори мають у свойому розпорядженні більше ніж достатньо засобів для створення бажаного налаштування. У цій статті лише поверхово зачепили можливі конфігураційні елементи. Досвід та експериментування дадуть вам краще розуміння всіх доступних елементів для нетипового налаштування стільниці.