Настройка Linux для kiosk-mode

За последнее время несколько раз пришлось делать сабж, так что решил задокументировать.

Итак, что нужно: чтобы запускалась графическая среда, в ней сразу нужное приложение. Пользователь должен начинать работу сразу, без всяких процедур авторизации и пр. При этом пользователь должен иметь возможность работать только с данным приложением, ну, возможно, оно разрешает запускать какие-то другие программы, но только строго по списку. Пользователь не должен иметь возможности закрыть основное приложение, выйти из графической среды, перелогиниться под другой учетной записью, выключить/перезагрузить компьютер.

Где это нужно - думаю, понятно. Устройства вроде банкоматов, компьютеры общественного пользования, компьютерные клубы. Иногда возникает желание такое сделать дома для компьютерно неграмотной родни - чтобы ничего не напортачили.

Конечно, для надежности нужны некоторые действия с аппаратной частью. Приводы CD/DVD (и floppy) убираются, разъемы usb/firewire на передней панели отключаются от материнки, кнопки reset и power также отключаются от материнки. Системник опломбируется. Только это все надо делать _после_ возни с программной частью - ато ребут в случае чего будет проблемой ;)

С программной частью так. Для автовхода в систему используем GDM (можно kdm/xdm, но они хуже настраиваются) - в настройках (gksudo gdmsetup) включаем Auto login или Timed login, на усмотрение. На вкладке "Пользователи" разрешаем вход только нужным пользователям (чаще всего - только одному; прав у него, конечно, самый минимум). На вкладке "Локальный вход" снимаем галочку "Показывать меню действий". На вкладке "Общие" включаем галочку "Перезапускать XServer..." и указываем нужный сеанс по умолчанию (мы его сейчас создадим, пока что выберите там что угодно).

Создаем файл /usr/share/xsessions/kiosk.desktop (имя любое):

[Desktop Entry]Encoding=UTF-8Name=Kiosk modeComment=Kiosk modeExec=/usr/local/bin/kiosk-sessionType=Application

Теперь опять запускаем gdmsetup и указываем Kiosk mode в качестве сеанса по умолчанию.
/usr/local/bin/kiosk-session будет такой:

#!/bin/bash

# Это приложение не должно позволять закрыть егосамое-нужное-приложение & xpid=$! gnome-settings-daemon & # Это если хотим использовать настройки Gnomemetacity & # Или какой вам оконный менеджер больше нравитсячего-еще-хотим-запускать-автоматом &# Ждем завершения основного приложения, т.е. предположительно до бесконечности.wait $xpid 

(не забудьте sudo chmod +x /usr/local/bin/kiosk-session).

Теперь правим /etc/X11/xorg.conf:

Section "ServerFlags" Option "DontZap" "True"            # Запрещаем Ctrl-Alt-Backspace Option "DontVTSwitch" "True"  # Запрещаем Ctrl-Alt-F#EndSection

Ставим openssh-server, убеждаемся что он будет стартовать автоматом и что в sshd_config стоит "X11Forwarding yes". Если нужен будет доступ по vnc, ставим x11vnc и прописываем в автозапуск (в kiosk-session).

Ну вроде всё, ребутаемся и наблюдаем результаты своих трудов ;)
Вся дальнейшая настройка - по ssh.

PS. Выбору оконного менеджера стоит уделить некоторое внимание. Дело в том, что многие WM, в том числе и из самых "простых" и "легких" (icewm, ion3, ...) имеют встроенную "командную строку", позволяющую запускать что угодно. Так что надо либо отключить это в настройках, либо выбрать WM без такой возможности (тот же metacity; Alt-F2 в Gnome обеспечивает не он, а gnome-panel).

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Комментарии (6) »

  1. Archi пишет

    Октябрь 2, 2008 в 2:59

    УОУ!!! В смысле супер!

  2. Котенок пишет

    Октябрь 2, 2008 в 4:24

    Нет слов, настолько понравилось!!! Я в полном восторге!!!

  3. Tony пишет

    Октябрь 3, 2008 в 0:26

    Спасибо, полезный материал. Добавил ваш блог в закладки.

  4. Olietta пишет

    Октябрь 3, 2008 в 4:53

    Да, довольно интересная статья.

  5. Banana Paradise пишет

    Октябрь 3, 2008 в 5:14

    По существу - понравилось. Полет мыслей велик и не объятен :)

  6. Четкий парниша пишет

    Октябрь 3, 2008 в 5:29

    Полезного много нашла для себя =)

RSS-лента комментариев к записи · Trackback URL

Оставить комментарий