При использовании Linux в локальной сети компьютерного класса возникает задача унифицированного окружения пользователя. Определённый пользователь должен иметь возможность сесть за любой компьютер в классе и по одной и той же учётной записи получить доступ к одной и той же файловой области. Такая машина называется клиентом, а машина, централизующая учётные записи и файловые области — сервером.
Задачу разделяемых по сети файлов можно решить с помощью сетевой файловой системы NFS. Для этого на сервере запускается системная служба nfsd, а разделяемые по сети каталоги и их свойства записываются в файл /etc/exports. Клиент монтирует (подключает к дереву каталогов) такие каталоги так же, как файловые системы — с помощью команды mount. Постоянно используемые сетевые каталоги можно записывать, по аналогии с файловыми системами, в файл /etc/fstab. Тогда монтирование будет происходить в процессе начальной загрузки системы.
Для создания унифицированного окружения необходимо объединить в локальной сети ровно один компьютер, настроенный по профилю Учитель и любое число компьютеров, настроенных по профилю Ученик.
Выбрать профиль «Учитель» или «Ученик» можно в процессе установки системы. Для этого на этапе Выбор пакетов для установки следует использовать режим Индивидуальный выбор пакетов и установить пакет network_profile_teacher или network_profile_student для настройки по профилям «Учитель» или «Ученик» соответственно.
Профиль Учитель предоставляет полный доступ к каталогу /home/chroot/nethome и его подкаталогам. Профиль Ученик монтирует этот каталог по NFS, подключая его к каталогу /home/network. Соответствующая строка в файле /etc/fstab машины Ученик выглядит так:
teacher:/home/chroot/nethome /home/network nfs rw,sync,hard,intr,bg
Задача распространения паролей по сети решена также с помощью сетевой файловой системы. Профиль Учитель предоставляет доступ по чтению к каталогу /home/chroot/etc, который машины с профилем Ученик монтирует вместо своего каталога /etc.
Все машины, каталог /etc которых смонтирован по NFS, получают одинаковые настройки и одинаковые учётные записи пользователей. Запись в сетевую /etc разрешать нельзя, но вместе с тем некоторые файлы в /etc должны быть доступны по записи. Кроме того, большая часть настроек различных компьютеров различается или может различаться.
Для того, чтобы иметь доступ к содержимому /etc и после монтирования по сети, на машине Ученик все файлы из каталога /etc дублируются в каталоге /etclocal путём создания жёстких ссылок. Все файлы в смонтированном /etc, за исключением тех, что содержат учётные записи пользователей, представляют собой символьные ссылки на соответствующие файлы в /etclocal. Таким образом, обращение к любому файлу в смонтированном /etc приведёт к файлу в /etclocal, который, в свою очередь, есть только альтернативное имя для соответствующего файла в «настоящем», несетевом /etc.
Тем не менее эта схема не учитывает поведение отдельных служб, которые удаляют или создают файлы в /etc. Это происходит, в основном, в процессе административных действий (установка и удаление пакетов, настройка системных служб и т. п.). Поэтому ^для выполнения любых административных действий на машине Ученик необходимо останавливать использование удалённого /etc с помощью системного сценария /etc/init.d/etcmount stop.
Допустимо использование машин, настроенных по профилю Учитель и Ученик в отсутствие локальной сети. В этом случае процесс начальной загрузки системы на машинах может замедляться на этапе настройки сети. Монтирование /etc по сети происходит только если сеть настроена и машина Учитель доступна. Поэтому в отсутствие сети используются учётные записи из собственного /etc машины, в том числе пользователь по умолчанию student.
Преобразованием стандартной установки ALT Linux 2.3 Junior в соответствии с профилем Учитель или Ученик занимается сценарий /usr/sbin/network_profile. Допустим многократный запуск этого сценария или запуск его на машине с системой, перенастроенной вручную, однако в последнем случае работать согласно профилю будут только те части системы, которые настраиваются им «с нуля». Сценарий принимает один параметр: teacher — для настройки по профилю Учитель и student — для настройки по профилю Ученик.
Вне зависимости от профиля, network_profile выполняет следующие действия:
Определяет IP-адрес компьютера
Создаёт файл /etc/hosts
Проставляет hostname, соответствующий IP-адресу, в системные файлы настроек
Исправляет файл /etc/profile.d/tmpdir.sh
По команде /usr/sbin/network_profile teacher система настраивается соответственно профилю «Учитель». При этом выполняются следующие действия:
Настройка службы DHCP и запуск её
Пересоздание пользователя teacher и замена пароля суперпользователя
Создание окружения /home/chroot, регистрация каталогов в /etc/exports
Создание сетевого пользователя netuser
Создание стартового сценария для службы ssh_passwd и запуск её
При пересоздании /home/chroot сетевые пользователи, их домашние каталоги и пароли пользователей уничтожаются!
По команде /usr/sbin/network_profile student система настраивается соответственно профилю «Учитель». При этом выполняются следующие действия:
создание записи о сетевых дисках в /etc/fstab, (все предыдущие записи о сетевых дисках уничтожаются)
создание стартового сценария для сетевого монтирования /etc (/etc/init.d/etcmount)
создание стартового сценария, который пересоздаёт локального пользователя student
пересоздание пользователя student и замена пароля суперпользователя
пересоздание каталога /etclocal
монтирование домашних каталогов и /etc (при перезагрузке происходит автоматически)
В схеме Учитель — Ученик компьютер Учитель всегда имеет адрес, указанный в настроечном сценарии network_profile (10.10.10.1). На этой машине запускается служба настройки удалённых компьютеров по сети (dhcpd, Dynamic Host Configure Prococol Daemon). Эта служба используется для присвоения IP-адресов машинам Ученик. На компьютерный класс выделено 240 адресов из диапазона, указанного в network_profile (10.10.10).
Выданные IP-адреса хранятся в файле /var/lib/dhcp/dhcpd.leases. Если этот файл пуст, присвоение сетевых адресов происходит по такому алгоритму. Первый из включённых компьютеров Ученик получит последний адрес из диапазона (10.10.10.254), что соответствует имени student1, второй из включённых — student2 (предпоследний адрес, 10.10.10.253), и так далее. В дальнейшем dhcpd будет при выдаче IP-адреса руководствоваться файлом dhcpd.leases, а новые компьютеры будут получать адреса, ещё ни разу не выдававшиеся. Соответствие IP-адресов именам компьютеров задаётся в файле /etc/hosts.
Если возникла необходимость заново назначить IP-адреса компьютерам, их следует выключить, службу dhcpd — остановить, удалить все файлы в каталоге /var/lib/dhcp, создать новый /var/lib/dhcp/dhcpd.leases нулевой длины, запустить службу и включить компьютеры Ученик.
Пример повторной раздачи IP-адресов: teacher# service dhcpd stop Stopping dhcpd service: [ DONE ] teacher# rm -f /var/lib/dhcp/* teacher# touch /var/lib/dhcp/dhcpd.leases teacher# service dhcpd start Starting dhcpd service: [ DONE ]