Документация по ОС FreeBSD Пятница, 03.05.2024, 10:59
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Samba

Совместная работа LDAP и SAMBA

Совместная работа LDAP и SAMBA

ВАЖНОЕ ЗАМЕЧНИЕ: ВСЕ ДЕЙСТВИЯ, ОПИСАННЫЕ В ДАННОЙ СТАТЬЕ БЫЛИ БОЛЕЕ-МЕНЕЕ ПРОВЕРЕНЫ НА ПРАКТИКЕ, НО В ЛЮБОМ СЛУЧАЕ - ВСЕ ВРЕМЯ УСТАНОВКИ ЭТИХ НАСТРОЕК Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ВАМ ИМЕТЬ ДВЕ ЗАПАСНЫХ (Т.Е. ТЕХ, С КОТОРЫХ ВЫ НЕ РАБОТАЕТЕ В ТЕКУЩИЙ МОМЕНТ) КОНСОЛИ С ПРАВАМИ СИСТЕМНОГО АДМИНИСТРАТОРА.

Что такое SAMBA и LDAP?

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.
Категория: Samba | Добавил: oleg (10.11.2007)
Просмотров: 2215 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024