[Из песочницы] Простая система управления компьютерным классом

Статья написана для учителей информатики, которым надоело заниматься постоянным восстановлением порядка в классе и на ученических компьютерах. Для тех, кому дорого время и здоровье.

Нам понадобится:

1. Установить на все компьютеры класса ОС Linux. Дистрибьютив выбирайте на свой вкус.
2. Установить на все ученические компьютеры пакеты: openbox, tint2, pcmanfm, gxkb, x11vnc (сервер и клиент), vlc
3. Кроме этого на учительском компьютере необходимо установить программу RuleUser, подробнее о ней будет рассказано ниже.
4. Создать на ученических компьютерах пользователя guest.
5. Установить и настроить на всех компьютерах пакет sshd.
6. Скопировать приложенные конфигурационные файлы на ученические и учительский компьютеры.

Примечание. В этом примере компьютер учителя имеет ip адрес: 192.168.1.100/24. Ученические компьютеры имеют адреса, начиная с 192.168.1.101/24.

Компьютеры учеников


1. Исключаем возможность изменения настроек рабочего стола ученических компьютеров.

Для этого используем связку openbox (для управления окнами) + tint2 (панель задач) + pcmanfm (для отображения иконок рабочего стола) + gxkb (для отображения статуса языка ввода).

Иконки рабочего стола ученических компьютеров будут находится на машине учителя. Таким образом учитель будет контролировать то, что доступно ученикам. На ученических же машинах необходимо добавить в файл /etc/fstab строку для монтирования nfs папки с машины учителя:

192.168.1.100:/mnt/nfs /home/guest/Desktop nfs  ro,nolock,nocto,actimeo=3600  0 0


2. Делаем возможным переключение языка ввода средствами X сервера, для этого на ученических компьютерах создаём файл /etc/X11/xorg.conf.d/10-keymap.conf со следующим содержимым:

Section "InputClass"
	Identifier "Keyboard settings"
	MatchIsKeyboard "yes"
	Driver  "evdev"
	Option  "XkbLayout" "us,ru"
	Option  "XkbVariant" ""
	Option  "XkbOptions" "grp:ctrl_shift_toggle"
EndSection]


Переключение по Ctrl+Shift.

3. Скачиваем конфиги для: openbox, tint2, pcmanfm, gxkb. Копируем их куда следует. Обычно это ~/.config
Обращаю ваше внимание, что в конфигах openbox есть скрипт autostart, через который запускается x11vnc сервер. А так же там есть скрипт обновления рабочего стола refresh, который запускается по нажатии на клавишу F7. На всякий случай предусмотрен вызов терминала по Ctrl+Shift+T. Ученикам о этих возможностях можно и не говорить, это сделано в первую очередь для удобства учителя.

4. С помощью средств конкретного дистрибьютива Linux, или вручную, устанавливаем openbox оконным менеджером по умолчанию. Для этого достаточно изменить значение параметра Session в файле ~/.dmrc вот так:

Session=openbox


5. Проверьте, чтобы сервис sshd был установлен и запускался при загрузке ОС.

6. Для возможности подключения учениками своих флешек я использую скрипт udevmon, который автоматически монтирует их в каталог /media. Данный скрипт нужно загружать при старте системы в виде демона. У меня это сделано через /etc/rc.d/rc.local.

Компьютер учителя


1. В большинстве дистрибьютивов Linux nfsd устанавливается по умолчанию, поэтому сразу переходим к его настройке:

— cоздайте папку /mnt/nfs и дайте к ней полные права доступа для всех (команда chmod 777 /mnt/nfs)
— добавьте в файл /etc/exports строку:

/mnt/nfs 192.168.1.0/24(ro,sync)


— посмотрие, чтобы в файле /etc/hosts.allow были следующие строки:

nfsd: 192.168.1.0/255.255.255.0
rpcbind: 192.168.1.0/255.255.255.0
mountd: 192.168.1.0/255.255.255.0


— проверьте, чтобы сервисы rpc и nfsd запускались при загрузке ОС.

2. Устанавливаем программу RuleUser. Данная программа — это авторская разработка компании Alt Linux, и в других дистрибьютивах вы её не найдёте. Но по сути — это скипт на языке python использующий библиотеки pygtk, gtkvnc. Установите эти библиотеки, если они отсутсвуют у вас в системе.

3. Настраиваем удалённые подключения в программе RuleUser. Это можно сделать используя графический конфигуратор, но можно и просто правкой файла ~/.ruleuser/config.cfg.

Вот часть конфигурационного файла, касающаяся ученических машин:

[group]
group_list = 1
g1 = standalone,10
g1_1 = 1,guest,pc2,192.168.1.101,192.168.1.101,standalone,1418361570,,xfce,standalone,22,22,guest,guest,static,,/home/guest/.vnc/passwd,vncviewer -geometry 1366x768,vncviewer -fullscreen -MenuKey none,False,True,False,100,x11vnc -noxdamage -scale 1024x768,5900,$HOME/.ssh/authorized_keys,$HOME/.ssh/authorized_keys,,:0,,,,$HOME/.ssh/authorized_keys,/tmp,False,default,False,True,False,False,False,False,,x11vnc -noxdamage -scale 640x480,vncviewer -MenuKey none,False,x11vnc -noxdamage -defer 3000,False,False,True,,,,,,,,,,,,,,,,default,True,,,,,,,,,,,,,,False,10,mpgv,800x600,640x480,False,300,False,False,,False,vlc --network-caching=100 --qt-minimal-view --no-qt-error-dialogs --no-qt-privacy-ask,,,,,,,,
g1_2 = 2,guest,pc3,192.168.1.102,192.168.1.102,standalone,1418361573,,xfce,standalone,22,22,guest,guest,static,,/home/guest/.vnc/passwd,vncviewer -geometry 1366x768,vncviewer -fullscreen -MenuKey none,False,True,False,100,x11vnc -noxdamage -scale 1024x768,5900,$HOME/.ssh/authorized_keys,$HOME/.ssh/authorized_keys,,:0,,,,$HOME/.ssh/authorized_keys,/tmp,False,default,False,True,False,False,False,False,,x11vnc -noxdamage -scale 640x480,vncviewer -MenuKey none,False,x11vnc -noxdamage -defer 3000,False,False,True,,,,,,,,,,,,,,,,default,True,,,,,,,,,,,,,,False,10,mpgv,800x600,640x480,False,300,False,False,,False,vlc --network-caching=100 --qt-minimal-view --no-qt-error-dialogs --no-qt-privacy-ask,,,,,,,,


Cтрока «g1 = standalone, 10.» Тут g1 — это группа компьютеров 1, количество компьютеров в группе равно 10. Дальше идёт описание отдельных компьютеров группы. Для упрощения настройки можно скопировать строки описания компьютеров, изменив в них номера компьютеров, ip адреса и уникальный идентификатор (для первого компьютера в данном конфиге это 1418361570). В графическом конфигураторе это будет немного дольше.

4. Настраиваем ssh для доступа к компьютерам учеников без ввода пароля:

— введите команду ssh-keygen -t rsa
она создаст в домашней директории пользователя два ключа, один из них нужно скопировать на удалённые машины, к которым вам необходим доступ.
— копируем ключи на все ученические компьютеры:

for i in 101..110; do ssh-copy-id -i ~/.ssh/id_rsa.pub guest@192.168.1.$i ; done
for i in 101..110; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.$i ; done


После этого можно будет заходить и управлять компьютером через пользователей root и guest. Вводить пароль вам не понадобится.

Итог


Учитель имеет полный доступ к компьютерам учеников по ssh. Через программу RuleUser можно следить за деятельностью учеников, перехватывать управление их компьютерами, блокировать ввод и т.д. Учитель даёт ученикам доступ только к тем программам, которые необходимы для конкретного урока. Для этого достаточно перетащить мышкой из меню Gnome, XFCE или KDE иконку какого-либо приложения в папку /mnt/nfs и обновить рабочий стол учеников (по F7, либо запустить скрипт обновления по ssh).

У меня это выглядело так:

Ученик:

5bf9bfe6f07149e085609b84e65f3e95.png

Учитель:

9a91405cea8a41bf94901ac5676a1fe6.png

© Habrahabr.ru