|
|
www.lissyara.su
—> главная
—> Архив
—> SAMBA + LDAP
Настройка Samba для хранения информации в LDAP
Автор: fr33man.
Обновленная версия лежит здесь.
Решил настроить хранение пользовательских учеток в LDAP. Пришлось посидеть.. Было много моментов на которых запинался. Решил написать
статейку, чтобы самому не забыть и людям помочь.
Перед настройкой связки samba + ldap нужно настроить LDAP сервер и авторизацию через LDAP.
Первым делом необходимо установить samba:
spider# cd /usr/ports/net/samba3
spider# make config
---------------------------------------------------------------------¬
¦ Options for samba 3.0.22,1 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦ [X] LDAP With LDAP support ¦ ¦
¦ ¦ [ ] ADS With Active Directory support ¦ ¦
¦ ¦ [X] CUPS With CUPS printing support ¦ ¦
¦ ¦ [X] WINBIND With WinBIND support ¦ ¦
¦ ¦ [ ] ACL_SUPPORT With ACL support ¦ ¦
¦ ¦ [ ] AIO_SUPPORT With experimental AIO support ¦ ¦
¦ ¦ [ ] SYSLOG With Syslog support ¦ ¦
¦ ¦ [X] QUOTAS With Quota support ¦ ¦
¦ ¦ [X] UTMP With UTMP support ¦ ¦
¦ ¦ [ ] MSDFS With MSDFS support ¦ ¦
¦ ¦ [ ] SAM_XML With XML smbpasswd backend ¦ ¦
¦ ¦ [ ] SAM_MYSQL With MYSQL smbpasswd backend ¦ ¦
¦ ¦ [ ] SAM_PGSQL With PostgreSQL smbpasswd backend ¦ ¦
¦ ¦ [ ] SAM_OLD_LDAP With Samba2.x LDAP legacy smbpasswd backend ¦ ¦
¦ ¦ [ ] SMBSH With SMBSH wrapper for UNIX commands ¦ ¦
¦ ¦ [ ] PAM_SMBPASS With SMB PAM module ¦ ¦
¦ ¦ [ ] EXP_MODULES With experimental module(s) ¦ ¦
¦ ¦ [X] POPT With system-wide POPT library ¦ ¦
+-L-----v(+)---------------------------------------------------------+
¦ [ OK ] Cancel ¦
L---------------------------------------------------------------------
spider# make install clean
... skipped ...
spider#
| Теперь переходим к редактированию конфигурационного файла самбы:
smb.conf:
[global]
# Имя домена
workgroup = teachers
# nebios имя машины
netbios name = spider
# Описание сервера
server string = Documents
# Тип безопасности user(необходимо для PDC)
security = user
# Хосты, которым разрешено обращаться к нашему серверу
hosts allow = 192.168.1. 127.
# Не использовать принтеры
load printers = no
# Лог файл самбы
log file = /var/log/samba/log.%m
# Максимальный размер лога
max log size = 500
# Использовать зашированные пароли
encrypt passwords = yes
# Администратор домена
admin users = admin
# Пароли храним в LDAP
passdb backend = ldapsam:ldaps://spider.teachers/
# Корень LDAP сервера
ldap suffix = dc=l1523,dc=ru
# Пользователи храняться в контейнере ou=users
ldap user suffix = ou=users
# Группы в контейнере ou=groups
ldap group suffix = ou=groups
# Контейнер для машин пользователей
ldap machine suffix = ou=computers
# Объект администратора samb'ы в LDAP
ldap admin dn = "cn=root,dc=l1523,dc=ru"
# Запрещаем удалять объекты
ldap delete dn = no
# Включаем поддержку SSL
ldap ssl = on
# Сетевые параметры
socket options = TCP_NODELAY
# Делаем из samb'ы PDC
local master = yes
os level = 64
domain master = yes
preferred master = yes
domain logons = yes
# Скрипт, который запустится при входе пользователя
logon script = proxy.vbs
# Сетевой путь, который необходимо подключить
logon path = \\%L\Profiles\%U\%m\%a
logon home = \\%L\Profiles\%U\%m\%a
# Имя диска, на который подключать
logon drive = Z:
# Поддержка wins
wins support = yes
# Не используем dns proxy
dns proxy = no
# Настройка кодировки
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
# Пусть samb'а еще и время отдает
time server = yes
# Скрипт, для добавления машин
add machine script = /usr/local/etc/samba/add_machine.pl %m
# Описание расшаренных директорий
[homes]
comment = Home Directories
browseable = no
writable = yes
[netlogon]
comment = Network Logon Service
path = /usr/local/etc/samba/netlogon/
guest ok = yes
writable = no
share modes = no
browseable = no
[Profiles]
create mode = 600
directory mode = 700
path = /home
browseable = no
guest ok = yes
[data]
comment = Dump of files
path = /data
create mode = 660
directory mode = 770
public = yes
writeable = yes
write list = @People, @wheel
read list = @People, @wheel
[tst]
comment = Dump of files
path = /tst
create mode = 664
directory mode = 770
public = yes
writeable = no
write list = fr33man, slv, admin
read list = @People, @wheel, admin
| Теперь необходимо создать всех необходимых пользователей, а так же все папки и скрипты.
Добавляем в LDAP необходимые контейнеры:
spider# cat base.ldif
dn: ou=users,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: ou=computers,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: computers
spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f base.ldif
Enter LDAP Password:
adding new entry "ou=users,dc=l1523,dc=ru"
adding new entry "ou=groups,dc=l1523,dc=ru"
adding new entry "ou=computers,dc=l1523,dc=ru"
| Теперь добавим группу admin и самого админа:
spider# cat admin_group_samba.ldif
dn: cn=Admin Group Samba,ou=groups,dc=l1523,dc=ru
objectClass: top
objectClass: posixGroup
cn: Admin Group Samba
gidNumber: 1000
memberuid: admin
spider# cat admin.ldif
dn: cn=admin,ou=users,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: admin
sn: admin
uid: admin
userPassword: {SSHA}*
uidNumber: 1000
gidNumber: 1000
gecos: Samba Admin
homeDirectory: /home/admin
loginShell: /usr/sbin/nologin
spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f admin_group_samba.ldif
Enter LDAP Password:
adding new entry "cn=Admin Group Samba,ou=groups,dc=l1523,dc=ru"
spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f admin.ldif
Enter LDAP Password:
adding new entry "cn=admin,ou=users,dc=l1523,dc=ru"
| Проверяем:
spider# id admin
uid=1000(admin) gid=1000(Admin Group Samba) groups=1000(Admin Group Samba)
spider#
| Все ок. Теперь создаем обычного пользователя:
spider# cat users_group_samba.ldif
dn: cn=People,ou=groups,dc=l1523,dc=ru
objectClass: top
objectClass: posixGroup
cn: People
spider# cat mtg.ldif@spider ~]$ echo -n "Миши
dn: cn=mtg,ou=users,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
cn: mtg
sn:: 0JzQuNGI0LjQvdCw
uid: mtg
userPassword: {SSHA}uBAtwLMhY/B3/fz6ct/18wQVnmYtZN6z
uidNumber: 5004
gidNumber: 5001
gecos: User
homeDirectory: /home/mtg
loginShell: /usr/sbin/nologin
spider#
| Русские буквы в LDAP хранятся в кодировке base64:
[fr33man@spider ~]$ echo -n "Мишина" | iconv -f koi8-r -t utf-8 | \
? uuencode -m 1 | head -n2 | tail -n 1
0JzQuNGI0LjQvdCw
[fr33man@spider ~]$
| Тут закодировано слово "Мишина". Два двоеточия говорят LDAP'у о том, что поле закодировано base64. Теперь добавляем:
spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f users_group_samba.ldif
Enter LDAP Password:
adding new entry "cn=People,ou=Groups,dc=l1523,dc=ru"
spider# ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f mtg.ldif
Enter LDAP Password:
adding new entry "cn=mtg,ou=users,dc=l1523,dc=ru"
spider# id mtg
uid=5080(mtg) gid=5001(People) groups=5001(People)
spider#
| Создаем домашние директории:
spider# mkdir /home/mtg
spider# chown mtg:People /home/mtg/
spider# chmod 0700 /home/mtg/
spider# ls -lad /home/mtg/
drwx------ 2 mtg People 512 Oct 6 11:28 /home/mtg/
spider# mkdir /home/admin
spider# chown admin:Admin\ Group\ Samba /home/admin/
spider# chmod 0700 /home/admin/
spider# ls -lad /home/admin/
drwx------ 2 admin Admin Group Samb 512 Oct 2 19:03 /home/admin/
spider#
| Теперь указываем самбе пароль от пользователя, который указан в smb.conf:
spider# smbpasswd -w 123456
Setting stored password for "cn=root,dc=l1523,dc=ru" in secrets.tdb
spider#
| И добавляем пользователя admin и mtg:
spider# smbpasswd -a admin
New SMB password:
Retype new SMB password:
Added user admin.
spider# smbpasswd -a mtg
New SMB password:
Retype new SMB password:
Added user mtg.
spider#
| Теперь поставим в соответствие nt группы и группы unix:
spider# net groupmap add rid=512 unixgroup="Admin Group Samba" \
? ntgroup="Admin Group Samba"
Successully added group Admin Group Samba to the mapping db
spider# net groupmap add rid=513 unixgroup="People" ntgroup="People"
Successully added group People to the mapping db
spider# net groupmap list
Admin Group Samba (S-1-5-21-3696629298-3620909010-2906680271-512)
-> Admin Group Samba
People (S-1-5-21-3499699245-1344799222-3934724855-3003) -> People
spider#
| Возможные rid:
Domain Admins 512
Domain Users 513
Domain Guests 514
Domain Computers 515
Domain Controllers 516
Cert Publishers 517
Shema Admins 518
Enterprise Admins 519
Group Policy Creator Owners 520
| Осталось создать необходимые директории и скрипты:
spider# mkdir -p /usr/local/etc/samba/netlogon/
| /usr/local/etc/samba/add_machine.pl:
#!/usr/bin/perl
$pass = "123456";
if ($ARGV[0] eq ''){ die "Usage: $0 machine";};
for($i = 10000; $i < 20000; $i++)
{
$res = `id $i 2>&1`;
if($res =~ m/id\:/)
{
$uid = $i;
$i = 20000;
}
}
open(LDIF,">/tmp/".$ARGV[0].".machine.ldif");
print LDIF "dn: cn=".$ARGV[0].",ou=computers,dc=l1523,dc=ru\n";
print LDIF "objectClass: top\n";
print LDIF "objectClass: person\n";
print LDIF "objectClass: posixAccount\n";
print LDIF "objectClass: shadowAccount\n";
print LDIF "cn: ".$ARGV[0]."\n";
print LDIF "sn: ".$ARGV[0]." Computer\n";
print LDIF "uid: ".$ARGV[0]."\$\n";
print LDIF "userPassword: {SSHA}*\n";
print LDIF "uidNumber: ".$uid."\n";
print LDIF "gidNumber: 5002\n";
print LDIF "gecos: Computer\n";
print LDIF "homeDirectory: /dev/null\n";
print LDIF "loginShell: /usr/sbin/nologin\n";
close(LDIF);
system("/usr/local/bin/ldapadd -x -w $pass -D \"cn=root,dc=l1523,dc=ru\" \
-f /tmp/".$ARGV[0].".machine.ldif > /dev/null");
system("/bin/rm -rf /tmp/".$ARGV[0].".machine.ldif");
system("/usr/local/bin/smbpasswd -am ".$ARGV[0]." >/dev/null");
exit(0);
| /usr/local/etc/samba/netlogon/proxy.vbs:
set wshShell = Wscript.CreateObject("WScript.Shell")
prefix = "HKEY_CURRENT_USER\Software\Microsoft\Windows\
CurrentVersion\Internet Settings\"
wshShell.regWrite prefix & "ProxyServer", "shield:3128"
wshShell.regWrite prefix & "ProxyEnable", 1
| Первый скрипт добавляет аккаунт машины, а второй при входе пользователя прописывает ему прокси сервер.
Настал Самый ответственный момент — запуск samba:
spider# echo samba_enable=\"YES\" >> /etc/rc.conf
spider# /usr/local/etc/rc.d/samba.sh start
| Теперь осталось завести машину в домен, причем после заведения создастся ее аккаунт:
spider# id veterok$
uid=10004(veterok$) gid=5002(computers) groups=5002(computers)
spider#
| Все, пользователи нормально входят в домен и все работает.
размещено: 2006-11-08,
последнее обновление: 2007-03-17,
автор: fr33man
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs
Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD
Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC
Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat
Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot
Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless
Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение
Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга
Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff
Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа
Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL
Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)
Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
|
Комментарии пользователей [9 шт.]