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

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

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).

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

Ученик:



Учитель: