Помощь - Поиск - Пользователи - Календарь
Полная версия: Советы по Samba
Богданович.ru :: Форум > Программы :: Software > *NIX системы
Lelik
Как сделать Samb'у контроллером домена Windows NT/2000

smb.conf:
Domain logons=yes
domain master=yes
local master=yes
os level=63
preferred master=yes
encrypt passwords=yes
admin users=root pasha adm
username map=/etc/samba/users.map
admin group=@wheel
/etc/samba/users.map:
root=administrator
# groupadd -d /home/samba -g 6666 SambaComputers
Для каждой машины-члена домена в сети:
# useradd -d /home/samba -u 66?? -g 6666 -s /bin/false ИмяМашины$
Затем:
# smbpasswd -a ИмяМашины$ (с пустым паролем)
mrak
Slackware 10.2 Samba AD Win 2003 (linux slackware samba ldap domain kerberos)

Возникла у меня такая задача как организовать небольшую файловую помойку
на Linux для пользователей Windows, которыми руководит AD.

Перечитал кучу документации, но, делая, как сказано в документации у
меня ничего не получалось. Вот поэтому и решил написать данное небольшое
руководство. Сразу оговорюсь, что за последствия, повлекшие за собой
какие-либо деструктивные действия, ответственности не несу. И еще на
статью меня подтолкнуло то, что почти вся документация написана для
отличных от мню любимого дистрибутива Linux Slackware.

Начнем.

Итак, первое, что нам надо сделать это разобраться, как же, все-таки,
работает домен на Windows 2003. Честно говоря, я и сам до сих пор в этом
деле не разобрался, но могу сказать одно, что почти вся его работа с
шарами происходит по протоколу Kerberos 5. Когда пользователь входит в
систему он проходит несколько этапов проверки на правильность логина и
пароля. И на одном из этих этапов сервером выдается пользователю так
называемый билет Kerberos, который в дальнейшем и используется для
работы.

Если Windows использует Kerberos, то и Linux тоже надо научить общаться
по этому протоколу. Но не стоит забывать, что Windows также работает и с
протоколом LDAP. Ну, ничего научим.

Начнем собирать необходимые программы для обучения Linux. Так как в
Slackware 10.2 используется пакет Samba, то может показаться, что он нам
и не понадобится, но на самом деле этот пакет нам придется удалить из
системы т.к. он собран без поддержки всех нам так необходимых вещей.
Удалить его можно с помощью (как я это сделал) утилиты pkgtool. Утилита
довольно понятная и я думаю, сами с ней разберетесь. Далее нам
понадобятся исходные коды:

heimdal-0.7.tar.gz
openldap-2.3.20.tgz
samba-3.0.21c.tar.gz


На момент моих долгих мучений с настройкой это были свежие версии.

Сначала надо собрать heimdal-0.7.tar.gz, это реализация протокола
Kerberos 5. Скачиваем из интернета, разархивируем и собираем с помощью
./configure make и make install. По умолчанию все собирается в папку
отличную от /usr, меня лично это не устраивает т.к. потом при
конфигурировании samba придется все ручками все указывать и, поэтому я
собирал так.

./configure prefix=/usr
make
make install DESTDIR=/test/krb5


Последняя команда копирует все файлы в каталог /test/krb5 (перед
выполнением этой команды сначала надо создать данную директорию). Это
делается для того, что бы потом можно было создать пакет для Slackware,
т.к. все-таки управлять пакетами проще, чем потом удалять файлы в
системе вручную. Если все прошло успешно, то переходим в каталог
/test/krb5 и с помощью команды makepkg krb5.tgz собираем пакет и
устанавливаем installpkg krb5.tgz. То же самое проделываем и с
openldap-2.3.20.tgz, но при сборке в Slackware 10.2 просто так не
соберется т.к. требуются еще несколько пакетов, если собираете в
Slackware current, то должно собраться без вопросов, во всяком случае, у
меня на current все собралось на ура.

./configure
make depend
make
make install DESTDIR=/usr/ldap
cd /usr/ldap
makepkg ldap.tgz
installpkg ldap.tgz


Для Slackware 10.2 еще понадобится пакет db4-4.4.20-i486-1.tgz, он нужен
для Kerberos и также для Ldap, можно ldap собрать и на Slackware 10.2,
без требования этого пакета сделав

./configure -enable-bdb=no -enable-hdb=no


Я не пробовал на Salckware 10.2 как собирается без этих опций, поэтому
не могу сказать какие пакеты могут потребоваться еще.

Вот теперь можно переходить к самой главной программе - samba.

Samba надо собирать с поддержкой ldap kerberos AD и winbind.
Разархивируем исходники и переходим в директорию, куда их
разархивировали в поддиректорию source. Первое что надо сделать это
посмотреть помощь по сборке с помощью ./configure -help будет выведен
большой список с параметрами. Нам нужно только несколько из них. Я не
буду описывать все, просто приведу команду с помощью, которой я
сконфигурировал.

./configure -prefix=/usr --with-configdir=/etc/samba --with-winbind \
--with-ads --with-krb5 --with-smbmount -with-ldap
make
make install DESTDIR=/test/samba
cd /test/samba
makepkg samba.tgz
(не забудьте удалить старую samba перед установкой)
installpkg samba.tgz


Теперь надо сконфигурировать все.
Переходим в каталог /etc/rc.d и в файле rc.samba добавляем такие строки.

samba_start() {
if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/samba/smb.conf -a -x /usr/sbin/winbindd ]; then
echo "Starting Samba: /usr/sbin/smbd -D"
/usr/sbin/smbd -D
echo " /usr/sbin/nmbd -D"
/usr/sbin/nmbd -D
echo " /usr/sbin/winbind"
/usr/sbin/winbindd
fi
}

samba_stop() {
killall smbd nmbd winbindd
}


Для того чтобы Samba стартовала при запуске системы файл
/etc/rc.d/rc.samba должен быть исполняемым.

Далее настраиваем Kerberos. Надо скопировать файл krb5.conf из папки,
куда Вы разархивировали архив с исходниками в папку /etc и
отредактировать его. Вот какой он у меня.

[libdefaults]
default_realm = LOCAL.NET

[realms]
LOCAL.NET = {
kdc = SERV.LOCAL.NET
}
[domain_realm]
.local.net = LOCAL.NET


LOCAL.NET - это имя домена.

SERV.LOCAL.NET - это имя компьютера под управлением Windows 2003,
который является Primary Domain Controller.

Редактируем файл /etc/nsswitch.conf.

passwd: files winbind
shadow: files winbind
group: files winbind

#passwd: compat
#group: compat #эти строчки должны быть
#обязательно закомментированы, иначе не будет работать.

hosts: files dns
networks: files

services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files
bootparams: files

automount: files
aliases: files


Теперь надо отредактировать самый главный файл для нашей задачи, это
/etc/samba/smb.conf.

[global]
auth methods = winbind #определяем метод аутентификации через winbind
netbios name = McLeodLinux #netbios имя компьютера
workgroup = LOCAL #рабочая группа (имя домена без суффикса .NET)
realm = LOCAL.NET #имя домена
password server = serv.local.net #имя компьютера PDC
server string = File Server #описание нашего LINUX сервера
security = ADS #говорим что мы в AD
allow trusted domains = No #разрешить доверительные домены.
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 0
preferred master = No
local master = No
domain master = No
dns proxy = No
ldap ssl = no #отключаем ssl
idmap uid = 10000-20000 #интервал uid для пользователей
idmap gid = 10000-20000 #интервал gid для групп
hosts allow = 172.16., 127.
strict locking = No
time server = Yes
winbind use default domain = true #использовать домен по умолчанию
log file = /var/log/samba/connect/samba.%m
max log size = 50
log level = 1
unix charset = KOI8-R
dos charset = cp866

[public]
comment = Public
path = /mnt/samba/public
public = yes
writable = yes
printable = no
create mask = 0666
valid users = @"LOCAL\Domain Admins"


Если в описании шары в строке valid users поставить
"LOCAL\Administrator", то вход будет разрешен только администратору.
Знак @ обозначает группу.

Тут вроде бы и все, но есть еще одна небольшая вещь, которую надо
сделать, а именно, перейти в каталог, где лежат у Вас исходники Samba, в
подкаталог source/nsswitch и скопировать файл libnss_winbind.so в
каталог /lib. Далее надо сделать символические ссылки на этот файл.

ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.1


Ну, вроде все у нас готово для того чтобы ввести наш Linux в домен Windows.

Сначала надо синхронизировать время на Linux с PDC Windows.

net time set


можно для большей уверенности сделать так

net time set -S Name_Windows_PDC


Далее получим билет от нашего PDC.

kinit Administrator@LOCAL.NET


Можно просмотреть каков результат командой.

klist


Если все нормально подсоединяемся к домену

net ads join -U Administrator@LOCAL.NET


Все должно пройти нормально, если нет, то роем Гугл. При удаче
перезапускаем Samba

/etc/rc.d/rc.samba restart


и начинаем давать закрывать доступ на шары.

Я не стал при расписывать процесс проверки работы всех служб, потому что
в интернете очень много документации по этому вопросу, Я только описал
те действия, которые надо сделать обязательно, потому как сам настраивал
не одну неделю и всю информацию собирал по кусочкам из разных
источников, включая даже эксперименты с другими дистрибутивами и поиск
отличий.

Если у кого ни будь работает команда

smbmount //server/share /mountpoint -o krb

Взято тут
mrak
Samba 3 в качестве PDC.

1.Программные пакеты которые пригодятся при установке и настройке PDC.
samba-client-3.0.23-0.1.14rc2 или любая другая версия не ниже третьей.
samba-3.0.23-0.1.14rc2 или любая другая версия не ниже третьей.
webmin-1.270-1 для администрирования через веб-интерфейс.

Пакет Samba последней версии можно скачать с сайта разработчика http://www.samba.org
и программу для администрирования через веб-интерфейс по адресу http://www.opencountry.com

Для начала устанавливаем Samba и Webmin.

После того как установили Samba нам потребуется отредактировать файл smb.conf
который находится в директории /etc/samba.
Пример рабочего файла который можно не править.

# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
# Date: 2006-05-02
[global]
workgroup = univer.local
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = Bad User
include = /etc/samba/dhcp.conf
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$
domain logons = Yes
domain master = Yes
local master = Yes
netbios name = netserv1
os level = 65
preferred master = Yes
security = user
idmap gid = 10000-20000
idmap uid = 10000-20000
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
[users]
comment = All users
path = /home
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
[groups]
comment = All groups
path = /home/groups
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
write list = root

Для того что бы администрировать сервер придется поставить
программу удаленного администрирования через веб-интерфейс – Webmin.
После установки к серверу можно подключится через веб интерфейс по адресу https://localhost:10000
и там в службах есть настройка SMB-сервера, где можно Linux-пользователей копировать в SMB-пользователей.
mrak
Как подружить Samba 3 и контроллер домена Windows 2003 SP1

Введение

Этот документ описывает интеграцию файл-сервера Samba в Windows 2003 Active Directory. К сожалению, Samba не может функционировать как контроллер домена Windows 2003. Однако на Samba можно поднять хороший файл- или принт-сервер.
Этот документ, основан на моем собственном опыте и советах других людей. В случае, если Вы обнаружите в нем ошибку, пожалуйста свяжитесь со мной.

Требования:
Samba версии 3.х.х собранная с опциями:
--with-ldap
--with-ads
--with-krb5
--with-pam
--with-winbind

heimdal >0.6.3(утилиты\библиотеки kerberos)
OpenLDAP >2.2.23
Сервер Windows 2003 sp1 с Active Directory

Все испытывалось на Suse Linux 9.1 и Windows 2003 Standart Server SP1

Условимся что:
192.168.0.1 – server.domain.com – это сервер Windows 2003
192.168.0.10 – client.domain.com – клиентская машина Linux с Samba

Настройка разрешения имен
Надеюсь что на вашем контроллере домена поднят DNS с зонами прямого и обратного просмотра.
Если поднят, то в файле /etc/resolv.conf прописываем следующее:

search domain.com
domain domain.com
nameserver 192.168.0.1

Если же в сети нет DNS(что вряд ли) сервера - можно воспользоваться файлами hosts на обеих машинах.

На машине с Samba в файл /etc/hosts добавляем:

192.168.0.1 server.domain.com server
192.168.0.10 client.domain.com client

На контроллере домена в файле %Systemroot%\System32\drivers\etc\hosts пишем следующее:

192.168.0.1 server server.domain.com
192.168.0.10 client client.domain.com


%Systemroot% - папка WINNT или WINDOWS(на системном диске)


Настройка Kerberos.

Часть этого документа использует DOMAIN.COM прописными буквами. Удостоверьтесь, что в вашем конфиге krb5.conf правильный регистр!

Приводим файл krb5.conf в соответствие с настройками вашей сети(не забывайте про регистр!).

[libdefaults]
default_realm = DOMAIN.COM

[realms]
SERVER.DOMAIN.COM = {
kdc = server.domain.com
}

[domain_realms]
.domain.com = DOMAIN.COM

После этого выполняем команду(необходимо знать пароль администратора КД):


pfil:/etc/samba # kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week
pfil:/etc/samba #


Возможные проблемы на этом этапе:


pfil:/etc/samba # kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: krb5_get_init_creds: Client (Admin@DOMAIN.COM) unknown
pfil:/etc/samba #

Надо проверить правильность ввода логина\пароль админа.


pfil:/etc/samba # kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: krb5_get_init_creds: unable to reach any KDC in realm (DOMAIN.COM)
pfil:/etc/samba #

Проверьте правильность настроек DNS и конфига krb5.conf


pfil:/etc/samba # kinit Admin@DOMAIN.COM
Admin@DOMAIN.COM 's Password:
kinit: krb5_get_init_creds: Clock skew too great
pfil:/etc/samba #

Рассинхронизация времени на КД и клиенте – выполните команду net time set(в linux) Желательно выполнять данную команду раз в неделю(можно через cron).

Настройка Samba и Winbind:
Пожалуй, самая легкая часть настройки.

Выкладываю уже готовый к эксплуатации конфиг (с комментариями к тому, на что надо обратить внимание):


[global]
log file = /var/log/samba/log.%m
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
null passwords = yes #Разрешить пустые пароли
interfaces = 192.168.0.10/255.255.255.0 #На каком интерфейсе работать
hosts allow = 192.168.0. 127.0.0.1 #Хостам из каких сетей разрешено
encrypt passwords = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
auth methods = winbind
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
name resolve order = hosts wins bcast lmhosts
case sensitive = no
dns proxy = no
netbios name = client #NetBIOS имя машины
server string = My Linux
password server = server.domain.com #dns имя сервера win 2003
realm = DOMAIN.COM #Имя рилма
client use spnego = yes
client signing = yes
local master = no
domain master = no
preferred master = no
workgroup = DOMAIN #Укороченное имя домена
debug level = 2
security = ads
dos charset = 866
unix charset = UTF-8 #Кодировка ФС –UTF-8 или KOI8-R
max log size = 50
os level = 0
wins server = 192.168.0.1 #Укажите здесь WINS сервер, если он есть

[upload]
comment = Upload
path = /srv/smb/upload
browseable = yes
writeable = yes
directory mask = 0777
create mask = 0666
valid users = @”Администраторы домена”, DOMAIN\Пользователь


Входим в Active Directory
Убедившись, что на контроллере домена нет машин с именем, которое мы использовали в конфиге Samba. Выполняем команду:

net ads join -U Admin


Настройка PAM и Winbind

Перед выполнением нижеперечисленных действий рекомендуется сделать бэкап всех редактируемых файлов.

Файл /etc/pam.d/samba не требует редактирования, т.к. он уже содержит необходимое.
Редактируем /etc/pam.d/login


#%PAM-1.0
auth required pam_securetty.so
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account sufficient pam_winbind.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so

Теперь на машину с linux можно заходить используя доменные аккаунты(DOMAIN\User).

Поддержка SSH

Для того, чтобы можно было использовать доменные аккаунты для входа через ssh в файле /etc/pam.d/sshd делаем изменения аналогично /etc/pam.d/login.


Заключение
Ну вот и все. Теперь можно запустить Samba:


/etc/init.d/smb start
/etc/init.d/nmb start
/etc/init.d/winbind start


В случае неполадок смотрим: /var/log/samba

Рекомендуется к прочтению: дока
Psixopad
Такая ситуация: стоит в сети Ubuntu Server 8.10, на нем Samba. В сети есть как машины под управлением WinXP, так и Mandriva. Если зайти из под Win на Samba и создать в расшареной директории файл или папку с кириллицей в названии (например: Новая папка), то никаких проблем не возникает. А вот зайдя на Samba из под Mandriva в ту же директорию, что и в первом случае (под одним и тем же юзером,например), то создать файл или папку с кириллицей в названии (например: Новая папка) не удается. С латинскими названиями файлы и папки успешно создаются как из под Win, так и из под Mandriva. В инете искал решение проблемы, но ничего не получается. Уже перепробовал много разных вариантов в параметрах dos charset, unix charset & display charset, но ничего не получается. Знает кто-нибудь что на эту тему? Решается ли вообще такая задача или может у меня с руками что не так?
FrIcE
2 Psixopad
Нужно при монтировании на клиентской машине указывать удалённую кодировку, тогда всё будет нормально создаваться.
Psixopad
Цитата(FrIcE @ 28.08.2009 - 14:09) *

2 Psixopad
Нужно при монтировании на клиентской машине указывать удалённую кодировку, тогда всё будет нормально создаваться.

Будем знать. Я проблему решил по-другому. Убрал Mandriva, поставил Ubuntu bk.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2010 Invision Power Services, Inc.