Эта "схема сети" - кошмар какой-то

.
1. Должен быть свитч, любой, но с числом портов, не меньшим числа компьютеров.
2. На "админском" компьютере нужно две сетевых карты + настроить iptables. "Плюшка" - возможность легко прикрутить поверх htb.init для трафик-шейпинга: то есть не дать кому-либо из клиентов забить весь канал своим трафиком, если он нужен другим.
3. На клиентских компьютерах под Ubuntu никаких локальных папок "школа" не нужно делать. На каждом должен быть свой пользователь(-ли) с именем, уникальным в рамках всей сети. Пользователи с такими же именами должны быть и на "админском" компьютере.
На админском надо поднять nfs-сервер, сделать свои подпапки для каждого пользователя или машины и установить права доступа в обычном *nix стиле.
Далее на клиентах ставим всё для nfs и правим fstab, чтобы монтировать "свою" сетевую папку при старте. Поскольку точка монтирования задаётся именно в fstab на каждом клиенте папка "школа" может указывать на свою nfs-"папку" на админе-сервере.
4. Для Windows-машин открываем те же папки через samba. Снова если нужно разграничить "можно читать все папки / писать только в свою", имена пользователей на каждой Windows-машине должны быть свои. Альтернативно, если Windows версии Pro, можно задать свои имена для входа в сеть, не трогая локальных пользователей.
P.S.: Звучит всё много сложнее, чем делается.
P.P.S.: Плюс сетевых папок в удобстве администрирования и резервного копирования.
Кстати, я бы сделал отдельную сетевую папку "Задания", монтируемую read-only каждому пользователю. Тогда достаточно скинуть материалы и задания на админском компе в эту папку, и все сразу увидят их у себя.