MZero #8 [окт. - дек. 2004]
Меню
  Главная
  Авторам
  Разделы
  Команда MZero
  Клуб ICQ
HiTech
  Limelight: настольная лампа анализирует мировые угрозы.
  Наручные часы со временем освоили новые профессии.
  Трёхколёсная "Шишка" пускает немцев под откос .
StreetLife
  Граффити.
  Snowboarding.
  Фризби? Фризби!!!
Моддинг
  Гайд по установки вентилятора в крысу.
  Гайд по электроники...
  "Basic Soldering Guide" aka "Паяние для чайников".
Mobile
  Продажи сотовых телефонов в России выросли на 38%.
  Всё об MP3-плейерах за 15 минут.
Windows
  Microsoft залатала ещё 22 "дыры".
  WinXP_faq (rar).
Пингвин'zzz
  Графика в консоли Linux.
  Монтирование дисков в Linux.
  Совместная работа LDAP и SAMBA.
Delphi
  Урок1_ Краткое введение в курс Delphi.
  Урок2. Реакции на события. Компонент F1Book.
  Урок3. Свойства объектов. Формирование отчетов в MS Excel.
Интернет - программинг
  Что такое RSS?
  Говорим на Flash Action Script.
  Говорим на Flash Action Script 2.
  Говорим на Flash Action Script 3.
  Говорим на Flash Action Script 4.
Web - desigN
  Дизайн для портативных устройств: ваш веб-сайт на маленьком экране.
  Из практики создания логотипов...
  Продолжение повести о логотипах вообще и шрифтах в частности...
  Фотография не по-детски.
Интернет - сайт
  Online игры.
  Бесплатная почта.
Жизнь в сети
  Сам себе издательство.
  Rambler: upgrade.
Софт
  Роботехника на грани фантастики.
  Теория происхождения видов, родов и отдельно стоящих персон.
  К вопросу о строительстве вавилонских башен.
Чтиво
  Пауло Коэльо - Алхимик.
  С любовью Алиса.
Games
  The Sims 2.
  GuildWars.
  GTA: San Andreas .
  Cheats.
Интервью
  Сьюзан сарандон: "Мои дети кричали: "Мама, не позорь нас!"
  Интервью с Крейгом Барреттом.
  Маша Цигаль: "Всякой одежды должно быть много!".
Музыка
  Русские идут!
  Black Eyed Peas.
Стиль
  Сезон красивых мелочей. Модные аксессуары.
Здоровье
  Пора в аптеку: что выбрать для защиты от гриппа и ОРВИ? .
Это мы смотрим...
  Чужой против Хищника: Война миров.
  Небесный капитан: Небесный тихоход.
  Хроники Риддика: Гражданин Галактики.
Наука
  Создана ткань толщиной в один атом.
Pick up
  Методики разговора с "трудными" людьми.
  О чем говорить с девушкой?
www.mzero.by.ru
Пингвин'zzz

Совместная работа LDAP и SAMBA.
LDAP - Lightweight Directory Access Protocol, т.е. протокол доступа к каталогу (иерархической оъектной базе данных). SAMBA - программа, которая превращает Unix-систему в сервер сети Microsoft Windows (слово SAMBA происходит от названия протокола сети Microsoft - SMB, Server Messaging Block). Результатом наших действий должна стать настроенная система, пользователи которой должны иметь возможность заходить на нее по SSh и получать доступ к своим домашним каталогам по SMB.
Необходимые условия

  • Установленный дистрибутив Fedora Core 1
  • Установленный пакет samba-3.0.X
  • Установленный пакет openldap-servers
  • Прямые руки :-)

Настройка сервера LDAP

Прежде всего, настрои сервер OpenLDAP - без этого наша затея теряет смысл. Процедура настройки сервера с точностью до одной строки повторяет настройку, которые я приводил в предыдущей своей "непутевой заметке" о PAM_LDAP. Если быть точным, то нам потребуется проделать все, что необходимо было сделать в указанной заметке, т.е. получить работающий сервер c PAM_LDAP. Если же вам нужен просто файл-сервер, на который у пользователей нет доступа по SSH/Telnet/IMAP и т.д., вы можете не изменять /etc/pam.d/system-auth. А файлы /etc/nsswitch.conf и /etc/ldap.conf все-таки лучше подправить, дабы они выглядели как я уже писал ранее.

По завершении настройки сервера и проверки его работоспособности с помощью ldapsearch, приступим к следующему этапу: добавим в конфигурационный файл сервера LDAP еще одну строку include так, чтобы список всех include в начале файла /etc/openldap/slapd.conf выглядел следующим образом:

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/samba.schema

Файл samba.schema лежит в документации к серверу SAMBA в каталоге /usr/share/doc/samba-3.0.0/LDAP, я рекомендую скопировать его в /etc/openldap/schema

# cp /usr/share/doc/samba-3.0.0/LDAP/samba.schema /etc/openldap/schema

Проведем также дополнительные настройки, которые поспособствуют повышению безопасности, для чего добавим следующие директивы access ПЕРЕД уже существующими в /etc/opeldap/slapd.conf

access to attrs=sambaNTPassword to self write to * none
access to attrs=sambaLMPassword to self write to * none

Файл скопирован, конфигурация изменена. Перезапускаем OpenLDAP:

# /etc/init.d/ldap restart

Настройка сервера SAMBA

прежде всего, исправляем конфигурационный файл сервера SAMBA. Файл этот зовется /etc/samba/smb.conf . Поскольку та версия, которая поставляется в дистрибутиве, ну ОЧЕНЬ длинная и с подробными комментариями, останавливаться на ней я не буду, а приведу пример упрощенного файла:

[global]
    netbios name = LOCALHOST
    workgroup = WORKGROUP
    server string = No-Dashis' server
    printcap name = /etc/printcap
    load printers = no
    printing = bsd

    log file = /var/log/samba/%m.log
    max log size = 50
    security = user

    encrypt passwords = yes
    unix password sync = no

    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = no
    case sensitive = no

#
# Пошли настройки LDAP
#
    ldap admin dn = "cn=root,dc=pupkin,dc=com,dc=ru"
    ldap ssl = off
    passdb backend = ldapsam:ldap://localhost
    ldap delete dn = no
    ldap suffix = dc=pupkin,dc=com,dc=ru
    ldap filter = (&(uid=%u)(objectClass=sambaSamAccount))
#
# При смене пользователем пароля SAMBA (по сети или
# через smbpasswd автоматически менять пароль LDAP
#
    ldap passwd sync = yes

[Home]
    comment = Home Directory
    browseable = yes
    writable = yes
    path = /home/%u

Запускаем SAMBA:

# /etc/init.d/smb start

Чтобы SAMBA могла "ходить" на сервер LDAP за информацией о паролях пользователей, необходимо сохранить пароль администратора сервера LDAP (или другого пользователя с достаточными правами) в файле secret.tdb . Сделать это можно примерно так:

# smbpasswd -w zarazamelkaya

Кроме того, нужно создать еще один объект в каталоге, отвечающий за представление сервера (в принципе, этого можно и не делать, тогда SAMBA сама создаст его аккурат в той ветви, которая обозначена как suffix в smb.conf). Я предпочитаю добавлять эту запись самостоятельно, чтобы она создалась в нужной мне ветвеи каталога. Добавить эту служебную запись можно воспользовавшись, например, командой ldapadd:

# echo "dn: sambaDomainName=MYSERVERNAME,dc=pupkin,dc=com,dc=ru
objectClass: sambaDomain
sambaDomainName: MYSERVERNAME
sambaSID: S-1-5-21-3905436772-1214432718-1934470886
sambaAlgorithmicRidBase: 1000" |
 ldapadd -x -w zarazamelkaya
 -D "cn=root,dc=pupkin,dc=com,dc=ru"

Финальная проверка

Ну вот, пришло время финального теста - заводим пользователя, меняем ему пароль используя smbpasswd и проверяем работоспособность. Пользовательский эккаунт будет образован сочетанием трех классов: AUXILIARY-классов sambaSamAccount (необходимые поля для Windows :-)) и posixAccount - атрибуты, необходимые для сопоставления учетной записи идентификаторов пользователя и группы (uid и gid), а также STRUCTURAL-класса sambaSidEntry

# echo "dn: cn=serega,dc=pupkin,dc=com,dc=ru
objectClass: sambaSamAccount
objectClass: sambaSidEntry
objectClass: posixAccount
cn: serega
uid: serega
uidNumber: 1000
gidNumber: 1001
homeDirectory: /home/serega
sambaSID: S-1-5-21-3905436772-1214432718-19344733
" |
 ldapadd -x -w zarazamelkaya
 -D "cn=root,dc=pupkin,dc=com,dc=ru"

# smbpasswd serega SeryoginMegaParol
# smbclient -L MYSERVERNAME -U serega

Когда smbclient спросит у вас пароль пользователя serega, надо вспомнить, что мы его установили на предыдущем шаге в команде smbpasswd. С тем же паролем пользователь serega сможет зайти в систему, например, по SSH - если установить его учетной записи в LDAP атрибут loginShell. Если же вы хотите, чтобы пользователи не могли заходить на сервер, а использовали только ресурсы SAMBA - просто отключите PAM_LDAP в /etc/pam.d/system-auth, а также уберите слово ldap из всех строк в /etc/nsswitch.conf

Но главное, что надо помнить - ответ на ваши вопросы всегда есть в документации.

Приложение 1. Работающий /etc/openldap/slapd.conf

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/samba.schema

pidfile /var/run/slapd.pid

access to attrs=sambaNTPassword by self write by * none
access to attrs=sambaLMPassword by self write by * none
access to attrs=userPassword by self write by * auth
access to * by peername=127.0.0.1 read by users read by anonymous auth

database    ldbm
suffix          "dc=pupkin,dc=com,dc=ru"
rootdn        "cn=root,dc=pupkin,dc=com,dc=ru"
rootpw        {crypt}<свой_хэш_не_скажу>

directory    /var/lib/ldap

index objectClass                                                  eq,pres
index ou,cn,mail,surname,givenname        eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                                        eq,pres,sub
index nisMapName,nisMapEntry                  eq,pres,sub

Приложение 2. Работающий /etc/nsswitch.conf

passwd:    files ldap
shadow:   files ldap
group:      files ldap
hosts:        files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:         files
netmasks:   files
networks:   files
protocols:    files
rpc:               files
services:      files
netgroup:    files
publickey:   nisplus
automount: files
aliases:          files

Приложение 3. Работающий /etc/ldap.conf

host 127.0.0.1
base dc=pupkin,dc=com,dc=ru
rootbinddn cn=root,dc=pupkin,dc=com,dc=ru
port 389
scope sub
pam_filter objectclass=posixAccount
pam_login_attribute uid
nss_base_passwd dc=pupkin,dc=com,dc=ru?sub?objectClass=posixAccount
nss_base_group  dc=pupkin,dc=com,dc=ru?sub?objectClass=posixGroup
nss_base_shadow dc=pupkin,dc=com,dc=ru?sub?objectClass=posixAccount
ssl no
pam_password md5

Приложение 4. Работающий /etc/pam.d/system-auth

auth        required      /lib/security/$ISA/pam_env.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
auth        sufficient    /lib/security/$ISA/pam_ldap.so use_first_pass
auth        required      /lib/security/$ISA/pam_deny.so

account     sufficient    /lib/security/$ISA/pam_unix.so
account     sufficient    /lib/security/$ISA/pam_ldap.so

password    required      /lib/security/$ISA/pam_cracklib.so retry=3 type=
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok
password    sufficient    /lib/security/$ISA/pam_ldap.so use_authtok
password    required      /lib/security/$ISA/pam_deny.so

session     required      /lib/security/$ISA/pam_limits.so
session     required      /lib/security/$ISA/pam_unix.so
session     optional      /lib/security/$ISA/pam_ldap.so

Строки, содержащие вызовы pam_ldap.so, могут быть закомментированы для отключения авторизации в LDAP.




наверх Автор: Бестужев Сергей Источник: http://www.surw.ru/~dalth/samba_ldap.html


Copyright by MZero
Копирование и использование данных материалов разрешается
только в случае указания на журнал "
MZero", как на источник получения информации.
При этом во всех ссылках обязательно явное указание адреса вэб-сайта
www.mzero.by.ru.
Журнал тестировался на IE 5.0/6.0; Opera; Mozilla; MYIE 2.0; Netscape