Автоматическая сортировка пользователей по группам в webmin

Одной из полезных возможностей Webmin является вызов пользовательского скрипта до и после действий по созданию, изменению, удалению пользователей и групп (pre и post hook). В нашей работе по школе мы задействовали этот механизм для автоматического создания папок со ссылками на домашние директории пользователей. Каждая папка представляла собой учеников одного класса.

Для чего все это создавалось

Домашние директории удобно хранить в одном каталоге, расположение которого не меняется. Такая система отлично подходит для администрирования, но совершенно неудобна для случая, когда нужно работать с файлами небольшого подмножества пользователей, объединенных в одну группу. Для решения этой проблемы, можно воспользоваться замечательном средством Unix систем — символическими ссылками.

Использование ссылок позволяет хранить домашние директории в одном месте и параллельно иметь директории, в которых сгруппированы не сами домашние директории пользователей, а ссылки на них. Ссылки должны быть относительными для корректной работы по NFS и возможности монтировать шару с пользователями куда угодно на удаленном компьютере.

Для решения наших задач был выбран следующий шаблон относительного пути:

 
../../$USERS_HOME_BASE_DIR/$USERNAME

При такой относительной структуре ссылок мы можем как угодно группировать пользователей при следующих двух ограничениях:

  1. Возможна только плоская группировка, т.е. все возможные группы располагаются на одном уровне
  2. Ссылки жестко привязаны только к названию домашнего каталога с пользователями. Папка с пользователями должна монтироваться под тем же именем, которое она имеет на сервере. Это ограничение можно обойти созданием дополнительной символической ссылки на компьютере который монтирует сетевую NFS шару, но будем считать такой вариант слишком хлопотным
Никто не мешает поддерживать заданную структуру руками, но спихнем эту задачу на машину.

Проблемы автоматической смены пароля для LDAP авторизации

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

Настройки умолчанию позволяли корректно логинится и изменять себе пароль без проблем, но в случае истекания срока действия пароля начинались странности — все необходимые атрибуты проверялись успешно и при логине система корректно рапортовала о необходимости обновления пароля:

You are required to change you LDAP password immediately.
,но после столь обнадеживающей фразы процесс смены пароля заканчивался печально
Authentication failed.

Поиск ничего путного не выдавал по данной проблеме, пришлось дебажить и исправлять самостоятельно.

Запоздалый рассказ о школьных делах. Краткое содержание предыдущих серий

Забросил я отчеты о школьных активностях. Тем не менее успело произойти много интересных вещей за это время.

Другая школа

За лето 2010 года энтузиазм Марины Анатольевны ВНЕЗАПНО пропал, на письма она не отвечала. В результате основное поле деятельности было перенесено в школу №6, к Анищенко Елене Сергеевне и как оказалась это было очень правильным решением.

Главное преимущество работы с ЕС, в том что с ней гораздо проще экспериментировать с различными технологиями. Стоит так же отметить временную свободу по сравнению с тем что было в 1 школе — мы могли приходить с утра (8.30-9.00) и сворачивать деятельность к 14-16 часам.

Не обошлось и без ложки дегтя: в шестой школе в компьюетрных классах используется гораздо более слабое железо. Интересно какой идиот закупал компьютеры с 128mb оперативки на борту?

Небольшой однострочник

Потребовалось для небольшого приложения список стран мира в обычном тестовом формате.
Гугл выдал сслыку на пост в котором человек подготовил файл, но в формате sql. Продолжать поиски не хотелось, поэтому получился такой однострочник для выдирания названий стран по русски:
tail -n +12 countries.sql| cut -c 97- | 
cut -f 3 -d ',' | sed -re "s/'(.+)'/\1/" - | 
sort > countries.txt

В результате получаем отсортированный список стран, записанных в файл countries.txt