The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка авторизации пользователей в БД используя libnss MySQL (nss auth redhat mysql)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: nss, auth, redhat, mysql,  (найти похожие документы)
From: Denis Frolov Date: Mon, 3 Aug 2010 17:02:14 +0000 (UTC) Subject: Настройка авторизации пользователей в БД используя libnss MySQL Оригинал: http://www.redhat-club.org/Articles/DenisFrolov/LibnssMySQLConfiguration Постановка задачи Задача: Настроить FTP сервер и квоты на дисковое пространство выделяемое каждому из пользователей. Решение: В связи с тем, что количество пользователей достаточно велико (нескольких сотен), то заводить их как локальных пользователей я посчитал нецелесообразным. После нескольких экспериментов pam_mysql был отвергнут т.к. квоты можно настроить только локальным пользователям, т.е. встала задача найти инструмент, который бы позволял хранить учетные записи пользователей в БД, и при этом чтобы система не видела разницы между локальным пользователем и пользователем из БД. На просторах Интернет был найден проект libnss_mysql ([21]Домашняя страница), который и позволяет проделать описанный выше фокус. Сборка RPM пакета, установка Скачем пакет с исходными текстами, например так: wget http://sourceforge.net/project/showfiles.php?group_id=56073&release_id=354053. Скопируем полученный файл в /usr/src/redhat/SOURCES. cp libnss-mysql-1.5.tar.gz /usr/src/redhat/SOURCES Нам необходимо извлечь из данного архива файл libnss-mysql.spec и внести в него некоторые изменения (дело в том, что spec содержащийся в архиве неработоспособен, т. к. содержит ошибку). Распаковываем архив: tar -zxvf /usr/src/redhat/SOURCES/libnss-mysql-1.5.tar.gz Копируем SPEC файл в положенное ему место: cp /usr/src/redhat/SOURCES/libnss-mysql-1.5/libnss-mysql.spec /usr/src/redhat/SPECS/ Подредактируем файл /usr/src/redhat/SPECS/libnss-mysql.spec поставив после строки %attr(0755,root,root) /lib/*.so* еще одну строку %attr(0755,root,root) /lib/*.la* Теперь сборка RPM пакета пройдет успешно. Собираем пакет: rpmbuild -ba libnss-mysql.spec После сборки пакет будет записан в каталог /usr/src/redhat/RPMS/i386/. Установим пакет libnss_mysql: rpm -ihv /usr/src/redhat/RPMS/i386/libnss-mysql-1.5-1.i386.rpm Настройка Настройка MySQL Если MySQL у Вас еще не запущен, сделайте это командой service mysqld start. Перейдите в каталог /usr/share/doc/libnss-mysql-1.5/sample/linux и скопируйте оттуда файл sample_database.sql в свой каталог: cp sample_database.sql $HOME В данном файле содержится набор SQL команд для создания необходимых таблиц в БД MySQL. Отредактируйте данный файл в своем домашнем каталоге. Вам необходимо поправить в нем строки которые создают тестовую группу и тестового пользователя. INSERT INTO users (username,gecos,homedir,password) VALUES ('cinergi', 'Ben Goodwin', '/home/cinergi', ENCRYPT('cinergi')); INSERT INTO groups (name) VALUES ('foobaz'); INSERT INTO grouplist (gid,username) VALUES (5000,'cinergi'); Поправим следующим образом: INSERT INTO users (username,gecos,homedir,password) VALUES ('testftp', 'Test FTP USER', '/home/testftp', ENCRYPT('pass')); INSERT INTO groups (name) VALUES ('ftpuser'); INSERT INTO grouplist (gid,username) VALUES (5000,'ftpuser'); Также необходимо поправить строки задающие пароли для доступа к БД, вместо rootpass и userpass поставьте <<адекватные>> пароли для доступа. GRANT USAGE ON *.* TO `nss-root`@`localhost` IDENTIFIED BY 'rootpass'; GRANT USAGE ON *.* TO `nss-user`@`localhost` IDENTIFIED BY 'userpass'; После этого выполните: mysql <sample_database.sql Создастся БД Auth и необходимые таблицы. Настройка libnss_mysql В каталоге /etc находятся 2 файла * libnss-mysql.cfg * libnss-mysql-root.cfg Отредактируйте данные файлы, сменив в них параметр password на пароли которые Вы задали в файле sample_database.sql. Отредактируйте файл nsswitch.conf заменив в нем строки passwd: files shadow: files на строки: passwd: files mysql shadow: files mysql Приступим к настройке квот для пользователей. Отредактируйте файл /etc/fstab следующим образом: Вместо строки LABEL=/home /home ext3 defaults 1 2 поставьте строку: LABEL=/home /home ext3 nosuid,noexec,usrquota 1 2 Перемонтируйте раздел /home mount -o remount /home Создадим каталог нашего тестового пользователя testuser: mkdir /home/testftp chown testftp.ftpusers /home/testftp chmod 700 /home/testftp Нам необходимо создать в файловой системе файлы квот, делается это командой: quotacheck -cug /home Строим таблицу таблицу текущего использования диска: quotacheck -avug Правим квоты для пользователя testftp командой edquota testftp откроется текстовый редактор (по умолчанию vi), Вам необходимо отредактировать значения полей soft и hard задающие мягкое и жесткое ограничение на число блоков для пользователя в данной файловой системе. После правки данного файла, проверьте, что квоты для пользователя установлены: quota testftp Настройка vsftpd Отредактируйте файл настроек vsFTPd следующим образом: max_clients=200 max_per_ip=4 listen_address=10.0.0.1 anonymous_enable=NO local_enable=YES write_enable=YES local_umask=222 dirmessage_enable=YES connect_from_port_20=YESchown_uploads=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES idle_session_timeout=600 data_connection_timeout=120 ftpd_banner=Welcome to FTP service. chroot_list_enable=NO pam_service_name=vsftpd listen=YES tcp_wrappers=YES chroot_local_user=YES Перезапустите vsftpd командой: service vsftpd restart Тестирование С клиентского компьютера выполните команду: ftp 10.0.0.1 Connected to 10.0.0.1. 220 Welcome to FTP service. 530 Please login with USER and PASS. Name: testftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. Подключение прошло успешно. Теперь попытайтесь закачать на ftp несколько файлов общим размером больше, чем то значение в которое вы выставили квоты. Заключение Для создания нового пользователя нам надо: 1. Создать пользователя в БД 2. Создать ему домашний каталог 3. Назначить пользователя владельцем каталога 4. Назначить права доступа на каталог пользователя 5. Установить квоты для пользователя Данные задачи можно автоматизировать написанием простого скрипта который и будет выполнять указанные действия. Если Вы хотите назначить пользователю такие же квоты такие же как и у другого пользователя выполните: edquota -p testftp2 testftp. Может распространяться свободно при указании авторства. Автор: Фролов Денис

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Pahanivo (ok), 19:49, 03/09/2010 [ответить]  
  • +/
    штото таки не понятно к чему все эти пляски с бубном ...
     
  • 2, tomuro (?), 23:27, 08/03/2011 [ответить]  
  • +/
    сделал все как написано, но
    при chown говорит мол нет такого
    как должен выглядить файл vsftpd в /etc/pam.d/
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру