|
Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти! |
Розгортання технології LDAP
Зміст |
[ред.] Проблеми приватного робочого середовища користувача, домашня папка
Працюючи в місцях надання "громадського доступу в Інтернет", люди часто відчувають потребу щось зберегти для подальшого користування. Але, на жаль, під рукою не завжди є носії інформації. Також виникає бажання мати "власний острів" у величезних просторах Всесвітньої мережі (допоможіть написати вступ, бо з мене жахливий письменник). Коротше кажучи, постає завдання: надати користувачам власний дисковий простір, тобто домашню папку та забезпечити нормальне її використання. У разі наявності домашньої папки користувач зможе зберігати там необхідну інформацію, зокрема запам'ятовувати паролі та встановлювати власні налаштування.
Як же вирішити цю проблему, якщо користувачів уже більше тисячі, а комп'ютерів лише 47 (чи скільки там - треба глянути)?
По-перше, необхідно десь зберігати інформацію про користуівачів (як мінімум, їх логіни та паролі). Причому так, щоб цю інформацію могла легко та швидко отримати будь-яка робоча станція. На допомогу приходить LDAP (Lightweight Directory Access Protocol). Інформацією щодо його виникнення та особливостей вантажити не буду, кому цікаво - є посилання у відповідному розділі.
LDAP підійшов нам завдяки своїй легкості та гнучкості. Він природно інтегрується в більшість необхідних сервісів, і користувачі не помічають, що вони працюють не з тією робочою станцією, за якою вони сидять, а з сервером директорії.
[ред.] Програмне забезпечення, що реалізує протокол LDAP і використовується в USIC
Сервер директорій працює під керуванням Fedora Core 4 (треба його якось оновити). У ролі сервера використовується slapd з пакету OpenLDAP. На клієнтах теж є OpenLDAP.
[ред.] Домашні папки
Друга проблема, яка постала перед нами - розміщення домашніх папок користувачів. Знову ж таки, комп'ютерів набагато менше за користувачів, тому було вирішено розподілити дисковий простір таким чином: кожному юзеру відводиться 500 Мб місця на жорсткому диску. На кожній робочій станції під юзерські папки відведено 30 Гб, отже, можна забезпечити "домівками" приблизно 2800 користувачів. Щоб не прив'язувати юзерів до тих комп'ютерів, на яких розташовані їх папки (це було б страшно незручно), ми організували приєднання цих папок за допомогою NFS.
Докладніше про NFS у USIC.
[ред.] Реєстрація користувачів
Раніше реєстрація користувачів та зміна інформації про них відбувалася через bash-скрипти (автори: Артем Пилипчук та Ростислав Голда). Це було справжнім проривом, оскільки до впровадження аутентифікації за допомогою LDAP користувачі заходили на робочі станції під логіном guest, цей аккаунт був створений локально на кожному комп'ютері. Ні про який особистий простір не йшлося. Але все таки було багато простору для вдосконалення. Оператор мав уважно вводити дані, слідкуючи за їх коректністю. Якщо відбувалася якась помилка, то доводилося починати все спочатку. Крім того, реєстрація складалася з двох частин: занесення даних до LDAP-директорії та створення домашньої папки на одній з робочих станцій. Якщо одна з цих операцій завершалася невдачею, виникали проблеми.
Тому навесні 2007 року Микола Найчук розпочав роботу над веб-інтерфейсом реєстрації, який став частиною UMS (USIC Management System). Стало набагато зручніше додавати та видаляти користувачів, шукати та редагувати інформацію про них. Система постійно оновлюється, виправляються помилки та додаються нові функції.
[ред.] Полегшений доступ та робота користувачів центру
Отже, проблему з реєстрацією користувачів та надання їм дискового простору вирішено. Тепер треба забезпечити їм можливість заходити (логінитися) в операційну систему на робочих станціях.
Перш за все треба повідомити системні служби, що для авторизації та аутентифікації користувачів використовується LDAP. Це робиться за допомогою редагування конфігураційних файлів.
File: /etc/pam.d/system-auth
auth [success=1 default=ignore] pam_ldap.so use_first_pass account [success=done default=ignore] pam_ldap.so password sufficient pam_ldap.so use_authtok session optional pam_ldap.so session required pam_sessionrun.so use_authtok start=/etc/scripts/login stop=/etc/scripts/logout optional_pass
File: /etc/nsswitch.conf
passwd: files ldap shadow: files ldap group: files ldap
File: /etc/openldap/ldap.conf
host 172.16.200.3 base dc=usic,dc=lan
Потім необхідно забезпечити монтування домашньої папки користувача на робочу станцію, з якою він працює. Це відбувається у скрипті login-script, який викликається від імені root'а з програми login, яка, в свою чергу, викликається системою PAM після успішної аутентифікації. Операції супроводжуються детальним записом до системного журналу (syslog).
#!/bin/bash # Login script based on local-login adapted for use in pam-sessionrun PAM module # (c) Elf-Eluna-Alina & local-login authors # 9.09.2007 - added 'ADDING FLASH ICONS' part #define Jaris Elf-Eluna-Alina # for localusers always success if [ `id -u $USER` -eq 999 ]; then mkdir /home/usic chown usic /home/usic fi if [ `id -u $USER` -le 1000 ]; then exit 0 fi # determining some variables HOMEHOST=$(ldapsearch -x "uid=$USER" | grep homedirhost | sed s/homedirhost:\ //) export HOME=/home/$USER logger -p auth.info -t usic-login "Beginning login procedure for $USER, home host $HOMEHOST" mount | grep -q $HOME if [ $? -eq 0 ]; then logger -p auth.notice -t usic-login "Directory $HOME already mounted, skipping mount operation" else # mkdir $HOME 2> /dev/null if [ -d $HOME ]; then logger -p auth.warn -t usic-login "Directory $HOME already exists, overmounting it" else mkdir $HOME 2> /dev/null chown $USER $HOME 2> /dev/null fi mount -t nfs $HOMEHOST:/usichome/$USER $HOME -o soft,timeo=10 2> /dev/null if [ $? -ne 0 ]; then logger -p auth.crit -t usic-login "Directory $HOME on $HOMEHOST mounting failed. Using temporary folder"; else logger -p auth.info -t usic-login "$HOME successfully mounted" fi fi # Regenerating Flash icons in case some dumb user deleted them or they somehow failed to be created (c) Jaris if [ ! -d $HOME/Desktop ]; then mkdir $HOME/Desktop chown $USER:users $HOME/Desktop fi for i in $(cd /etc/scripts/flash_icons; ls); do if [ ! -e $HOME/Desktop/$i ]; then cp /etc/scripts/flash_icons/$i $HOME/Desktop/ chown $USER:users $HOME/Desktop/$i fi done
Аналогічним чином після виходу (логауту) користувача виконується скрипт, який відмонтовує його домашню папку.
#!/bin/bash # Login script based on local-login adapted for use in pam-sessionrun PAM module # (c) Elf-Eluna-Alina & local-login authors # for localusers always success if [ `id -u $USER` -le 1000 ]; then exit 0 fi # finding whether we are the last instance ever # TODO: 1 or 0? # TODO: locks for simultaneous logouts LEFT=`w -s | cut -d" " -f1 | grep $USER | wc -l` # if [ $LEFT -eq 1 ] || [ $LEFT -eq 0 ]; then // WTF WHAT THE HELL? ElfElunaAlina if [ $LEFT -eq 0 ]; then umount /home/$USER -l 2> /dev/null if [ $? -ne 0 ]; then logger -p auth.crit -t usic-logout "/home/$USER failed to umount" exit 1 else logger -p auth.info -t usic-logout "$USER logged out, home directory umounted" fi rmdir /home/$USER 2> /dev/null if [ $? -ne 0 ]; then logger -p auth.info -t usic-logout "Couldn't remove directory /home/$USER" else logger -p auth.info -t usic-logout "Directory /home/$USER removed" fi else logger -p auth.info -t usic-logout "$USER logout registered, but the user was not the last one" fi
Також є ряд допоміжних скриптів (наприклад, створення, видалення та переміщення папок користувачів, копіювання на робочий стіл значків пристроїв змінних носіїв тощо), які безпосередньо з LDAP не працюють.
[ред.] Посилання
- Lightweight Directory Access Protocol - Wikipedia, the free encyclopedia
- OpenLDAP, Title
- redhat.com
- http://directory.fedora.redhat.com
- redhat.com
- http://directory.fedora.redhat.com/wiki/Install_Guide
- http://directory.fedora.redhat.com/wiki/FAQ#Configuring_Directory_Server
- RFC 2251 (rfc2251) Lightweight Directory Access Protocol (v3)