Домен NT4 на SAMBA

22 июня, 2011 Рубрики: HOWTO, Linux, SAMBA, Настройка сервера Linux

настройка контроллера домена NT4 на linux, samba pdcДоброго времени, уважаемые читатели www.k-max.name! Сегодня я хочу предоставить небольшое HOWTO организации контроллера домена уровня NT4 на основе пакета SAMBA. Данная реализация отлично подходит для офиса в 15-20 машин с разграничением доступа к ресурсам на основе групп пользователей + небольшой стартовый скрипт (logon).

Исходные данные

Для понимания того, что тут будет происходить, настоятельно рекомендую ознакомиться с о статьями:

Созданный ниже сервер вполне неплохо справлялся со своими задачами на следующей железке с конфигурацией: CPU 800Mhz, ОЗУ 384Мб, HDD 100Гб.

Конфигурируемая сеть будет иметь следующие параметры:

  • имя домена NT4: domain
  • имя сервера – контроллера домена: samba
  • ip и маска интерфейса сервера: 192.168.3.1/24
  • клиенты будут получать сетевые настройки по DHCP.
  • сетевые имена будут выдаваться WINS сервером, которого для маленькой сети без доступа в интернет вполне предостаточно
  • хранилищем аутентификационных данных пользователей будет файл /etc/passwd (+shadow) и база паролей samba – smbpasswd
  • доступ к ресурсам сервера будет осуществляться на основе прав доступа пользователей и групп UNIX, присоединенных (to map или примапленных) к учетным данным SAMBA (читай – Windows).

Задача

Настроить доменную авторизацию уровня NT4 в сети Windows. Организовать 2 группы пользователей с полным доступом к своим каталогам, одному пользователю предоставить полный доступ ко всем каталогам.

Настройка домена NT4

1. Настраиваем имя машины на samba

server:~# echo samba > /etc/hostname  #чтобы имя подхватилось после перезагрузки
server:~# echo samba > /proc/sys/kernel/hostname    #чтобы имя заработало сейчас
server:~# bash
samba:~#

2. Добавляем запись для сервера samba в файл /etc/hosts (так же возможно добавление и других сетевых ресурсов, например принетров):

samba:~# cat /etc/hosts
127.0.0.1       localhost
192.168.3.1     samba

3. Устанавливаем пакеты samba и dhcp сервер.

4. Настраиваем сетевой интерфейс:

samba:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:bf:0d:02
          inet addr:192.168.3.1  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:febf:d02/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:356 (356.0 B)  TX bytes:13070 (12.7 KiB)

5. Настраиваем DHCP сервер в соответствии с конфигом:

samba:~# cat /etc/dhcp3/dhcpd.conf
default-lease-time 86400;
max-lease-time 172800;
default-lease-time 86400;

option subnet-mask 255.255.255.0;
option ntp-servers 192.168.3.1;
# раскомментируйте опции DNS, только если на
# хосте с SAMBA установлен и настроен DNS 
#option domain-name "DOMAIN";
#option domain-name-servers 192.168.3.1;
option netbios-name-servers 192.168.3.1;
option netbios-node-type 8;
### ЗАМЕТКА ###
# netbios-node-type=8 данный параметр устанавливает
#   "Гибридный режим" взаимодействия с сервером WINS
#   на основе Unicast запросов, тем самым снижая
#   нагрузку на сеть, уменьшая UDP broadcast трафик на 90%
############

subnet 192.168.3.0 netmask 255.255.255.0 {
 range dynamic-bootp 192.168.3.128 192.168.3.254;
 option routers 192.168.3.1;
 allow unknown-clients;
 }

6. Настраиваем конфиг SAMBA (например с помощью редактора vim) в соответствии со следующим содержимым:

samba:~# cat /etc/samba/smb.conf
[global]
 workgroup = DOMAIN
 username map = /etc/samba/smbusers
 name resolve order = wins bcast hosts
 add user script = /usr/sbin/useradd -m -G users '%u'
 delete user script = /usr/sbin/userdel -r '%u'
 add group script = /usr/sbin/groupadd '%g'
 delete group script = /usr/sbin/groupdel '%g'
 add user to group script = /usr/sbin/usermod -a -G '%g' '%u'
 add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody '%u'
 logon script = scripts\login.bat
 logon path =
 logon drive = X:
 domain logons = Yes
 preferred master = Yes
 wins support = Yes
 interfaces = 192.168.3.1 127.0.0.1

[homes]
 comment = Домашние каталоги пользователей
 valid users = %S
 read only = No
 browseable = No

[netlogon]
 comment = Сетевой Logon сервис
 path = /data/%U
 valid users = %S
 read only = No

[Отдел1]
 comment = Файлы отдела 1
 path = /data/otdel1
 valid users = %G
 read only = No

[Отдел2]
 comment = Файлы отдела 2
 path = /data/otdel2
 valid users = %G
 read only = No

В основном, все параметры были рассмотрены в прошлых статьях о SAMBA. В данном конфиге добавились следующие параметры:

  • username map – указывает файл соответствия пользователей UNIX, пользователям Windows,
  • name resolve order – указывает порядок разрешения имен (в нашем случае имена обнаруживаются сначала в WINS базе, затем через broadcast запрос, затем файл hosts),
  • параметры завершающиеся на … script = – указывают команду добавления пользователя, если пользователь добавляется через утилиту srvtools (о ней ниже) или командный интерфейс Windows (команды net),
  • logon script – задает путь загрузочного скрипта,
  • logon path – устанавливает каталог хранения служебных параметров пользователя (Рабочий стол, NTuser.dat и т.д.), своеобразный перемещаемый профиль,
  • logon drive – заставляет подключить домашний каталог пользователя как диск Х:,
  • domain logons – это, собственно, и есть тот параметр, заставляющий самбу действовать как контроллер домена,
  • preferred master – заставляет самбу работать мастер браузером в своей рабочей группе,
  • interfaces – указывает самбе на каких интерфейсах работать (слушать о отвечать на запросы).

Параметр valid users в настройках сервисов задает разрешения на доступ к сервисам, если указан %G, значит доступ на основании группы, параметр %S – задает возможность работать от авторизовавшегося пользователя.

Сервис [homes] предоставляет доступ к домашним каталогам пользователей. Сервис [netlogon] определяет сервис сетевого входа, при этом указывает размещение данного сервиса в структуре каталогов в виде path = /data/имя_пользователя. Если поместить в каталог /data/имя_пользователя/scripts файл login.bat, то он будет использоваться как логон-скрипт.

7. Добавляем пользователя root в базу smbpasswd:

samba# smbpasswd -a root
New SMB password:
Retype new SMB password:
Added user root.
samba#

Пароль root‘а должен соответствовать паролю учетной записи UNIX. Данный пользователь будет администратором домена Windows NT4. Никогда не удаляйте эту учетную запись из базы smbpasswd после того, как будут инициализированы группы домена Windows. Если удалить эту учетную запись, система будет не функциональна и Samba не сможет больше управляться.

8. Создаем файл соответствия пользователей, позволяющий учетной записи root обозначаться как эквивалент учетной записи Administrator в сетевой среде Windows.  /etc/samba/smbusers такого содержания:

samba:~# cat /etc/samba/smbusers
####
# User mapping file
####
# Формат записей
# -----------
# Unix_ID = Windows_ID
#
# Примеры:
# root = Administrator
# janes = "Jane Smith"
# jimbo = Jim Bones
#
#   Пояснение: если имя включает пробел, оно должно быть заключено
#   в кавычки. В примере имя 'jimbo' будет присоединено к именам Windows
#   'Jim' и 'Bones', потому что между нити есть пробел, но нет кавычек
#######################################################################
root = Administrator
####
# End of File
####

9. Создаем и присоединяем группы домена Windows к группам UNIX:

samba:~#
samba:~# # Добавляем группы UNIX, на основании которых будет разграничение доступа к ресурсам,
samba:~# #  для примера достаточно 2-е группы (1. - otdel1, 2. - otdel2)
samba:~#
samba:~# groupadd otdel1
samba:~# groupadd otdel2
samba:~#
samba:~# # Присоединение стандартных групп домена Windows к группам Unix
samba:~#
samba:~# net groupmap add ntgroup="Domain Admins"  unixgroup=root type=d
No rid or sid specified, choosing a RID
Got RID 1003
Successfully added group Domain Admins to the mapping db as a domain group
samba:~# net groupmap add ntgroup="Domain Users"   unixgroup=users type=d
No rid or sid specified, choosing a RID
Got RID 1004
Successfully added group Domain Users to the mapping db as a domain group
samba:~# net groupmap add ntgroup="Domain Guests"  unixgroup=nogroup type=d
No rid or sid specified, choosing a RID
Got RID 1005
Successfully added group Domain Guests to the mapping db as a domain group
samba:~#
samba:~# # Присоединение вручную добавленных групп к группам UNIX
samba:~#
samba:~# net groupmap add ntgroup="Группа 1"  unixgroup=otdel1 type=d
No rid or sid specified, choosing a RID
Got RID 1006
Successfully added group Группа 1 to the mapping db as a domain group
samba:~# net groupmap add ntgroup="Группа 2"  unixgroup=otdel2 type=d
No rid or sid specified, choosing a RID
Got RID 1007
Successfully added group Группа 2 to the mapping db as a domain group
samba:~#
samba:~# # Проверка того, что получилось:
samba:~#
samba:~# net groupmap list | sort
Domain Admins (S-1-5-21-3104487160-181875607-2722010074-1003) -> root
Domain Guests (S-1-5-21-3104487160-181875607-2722010074-1005) -> nogroup
Domain Users (S-1-5-21-3104487160-181875607-2722010074-1004) -> users
Группа 1 (S-1-5-21-3104487160-181875607-2722010074-1006) -> otdel1
Группа 2 (S-1-5-21-3104487160-181875607-2722010074-1007) -> otdel2

10.  Для каждого пользователя домена, необходимо создать его учетную запись в UNIX и SAMBA с ОДИНАКОВЫМИ ПАРОЛЯМИ И ИМЕНАМИ! А так же, пользователей необходимо добавить в соответствующие группы:

samba:~#
samba:~# # Добавление пользователей в UNIX с созданием структуры домашнего каталога (-m),
samba:~# #   комментарием (-c) и включением в дополнительную группу (-G)
samba:~#
samba:~# useradd -m user1 -c "Пользователь отдела 1" -G otdel1
samba:~# useradd -m user2 -c "Пользователь отдела 2" -G otdel2
samba:~# useradd -m god -c "Пользователь для доступа ко всему"
samba:~#
samba:~# # Задание пользователям UNIX паролей
samba:~#
samba:~# passwd user1
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
samba:~# passwd user2
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
samba:~# passwd god
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
samba:~#
samba:~# # добавление созданных пользователей UNIX в базу smbpasswd
samba:~#
samba:~# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.
samba:~# smbpasswd -a user2
New SMB password:
Retype new SMB password:
Added user user2.
samba:~# smbpasswd -a god
New SMB password:
Retype new SMB password:
Added user god.
samba:~#
samba:~#
samba:~# # Проверка пользователей на принадлежность к нужным группам:
samba:~#
samba:~# id user1
uid=1003(user1) gid=1006(user1) группы=1006(user1),1004(otdel1)
samba:~# id user2
uid=1004(user2) gid=1007(user2) группы=1007(user2),1005(otdel2)

11. Подготавливаем набор каталогов общего доступа и назначаем прав и владельцев (если необходимо, можно подключить отдельный раздел и прописать в /etc/fstab для автоматического монтирования):

samba:~# mkdir -p /data/{otdel1,otdel2}
samba:~# chown -R root:root /data
samba:~# chown -R god:otdel1 /data/otdel1
samba:~# chown -R god:otdel2 /data/otdel2
samba:~#
samba:~# # Устанавливаем права доступа владельцу и группе - rwx (чтение,
samba:~# # запись, исполнение), остальным - rx (чтение/исполнение)
samba:~#
samba:~# chmod -R ug+rwx,o+rx-w /data

12. Устанавливаем запуск Samba и DHCP при старте системы и перезапускаем их теми способами, которые актуальны для вашей системы. На примере Debian:

samba:~# update-rc.d dhcp3-server defaults
 Adding system startup for /etc/init.d/dhcp3-server ...
 /etc/rc0.d/K20dhcp3-server -> ../init.d/dhcp3-server
 /etc/rc1.d/K20dhcp3-server -> ../init.d/dhcp3-server
 /etc/rc6.d/K20dhcp3-server -> ../init.d/dhcp3-server
 /etc/rc2.d/S20dhcp3-server -> ../init.d/dhcp3-server
 /etc/rc3.d/S20dhcp3-server -> ../init.d/dhcp3-server
 /etc/rc4.d/S20dhcp3-server -> ../init.d/dhcp3-server
 /etc/rc5.d/S20dhcp3-server -> ../init.d/dhcp3-server
samba:~# update-rc.d samba defaults
 Adding system startup for /etc/init.d/samba ...
 /etc/rc0.d/K20samba -> ../init.d/samba
 /etc/rc1.d/K20samba -> ../init.d/samba
 /etc/rc6.d/K20samba -> ../init.d/samba
 /etc/rc2.d/S20samba -> ../init.d/samba
 /etc/rc3.d/S20samba -> ../init.d/samba
 /etc/rc4.d/S20samba -> ../init.d/samba
 /etc/rc5.d/S20samba -> ../init.d/samba
samba:~# /etc/init.d/dhcp3-server restart
Stopping DHCP server: dhcpd3 failed!
Starting DHCP server: dhcpd3.
samba:~# /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
samba:~#

13. Настраиваем NSS (диспетчер разрешения имен, name service switch), чтобы обрабатывать разрешение имен, основанное на WINS:

samba:~# cat /etc/nsswitch.conf | grep host
#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 - оригинальная строка
hosts:          files wins          # измененная для использования wins

На этом настройка закончена.

Проверка работоспособности

Давайте теперь проверим, что у нас получилось.

1. Проверка корректной конфигурации smb.conf (в случае ошибок будет выводиться предупреждение и скорее всего сервис samba не сможет запуститься):

samba:~# testparm -s
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[Отдел1]"
Processing section "[Отдел2]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
[global]
 workgroup = DOMAIN
 interfaces = 192.168.3.1, 127.0.0.1
 username map = /etc/samba/smbusers
 syslog = 0
 name resolve order = wins bcast hosts
 add user script = /usr/sbin/useradd -m -G users '%u'
 delete user script = /usr/sbin/userdel -r '%u'
 add group script = /usr/sbin/groupadd '%g'
 delete group script = /usr/sbin/groupdel '%g'
 add user to group script = /usr/sbin/usermod -a -G '%g' '%u'
 add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody '%u'
 logon script = scripts\login.bat
 logon path =
 logon drive = X:
 domain logons = Yes
 preferred master = Yes
 wins support = Yes

[homes]
 comment = Домашние каталоги пользователей
 valid users = %S
 read only = No
 browseable = No

[netlogon]
 comment = Сетевой Logon сервис :) 
 path = /data/%U
 valid users = %S
 read only = No

[Отдел1]
 comment = Файлы отдела 1
 path = /data/otdel1
 valid users = %G
 read only = No

[Отдел2]
 comment = Файлы отдела 2
 path = /data/otdel2
 valid users = %G
 read only = No

2. Проверка запущен ли демон:

samba:~# ps ax | grep mbd
 6724 ?        Ss     0:00 /usr/sbin/nmbd -D
 6726 ?        S      0:00 /usr/sbin/nmbd -D
 6729 ?        Ss     0:00 /usr/sbin/smbd -D
 6735 ?        S      0:00 /usr/sbin/smbd -D

3. Проверка возможности анонимного подключения к серверу самба:

samba:~# smbclient -L localhost -U%
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.5.6]

 Sharename       Type      Comment
 ---------       ----      -------
 netlogon        Disk      Сетевой Logon сервис :) 
 Отдел1     Disk      Файлы отдела 1
 Отдел2     Disk      Файлы отдела 2
 IPC$            IPC       IPC Service (Samba 3.5.6)
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.5.6]

 Server               Comment
 ---------            -------
 1PC
 2PC
 SAMBA                Samba 3.5.6

 Workgroup            Master
 ---------            -------
 DOMAIN               SAMBA

4. Проверка аутентифицированного соединения с сервером:

samba:~# smbclient //samba/Отдел1 -Uuser1%password1
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.5.6]
smb: \> mkdir 123
smb: \> dir
 .                                   D        0  Wed Jun 22 20:02:29 2011
 ..                                  D        0  Wed Jun 22 19:29:56 2011
 123                                 D        0  Wed Jun 22 20:02:29 2011

 41807 blocks of size 8192. 8204 blocks available
smb: \> q
samba:~# smbclient //samba/Отдел1 -Uuser2%password2
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.5.6]
smb: \> mkdir
mkdir <dirname>
smb: \> mkdir 1234
NT_STATUS_ACCESS_DENIED making remote directory \1234
smb: \> q
samba:~# smbclient //samba/Отдел1 -Ugod%password
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.5.6]
smb: \> mkdir 1234
smb: \> dir
 .                                   D        0  Wed Jun 22 20:03:52 2011
 ..                                  D        0  Wed Jun 22 19:29:56 2011
 123                                 D        0  Wed Jun 22 20:02:29 2011
 1234                                D        0  Wed Jun 22 20:03:52 2011

 41807 blocks of size 8192. 8204 blocks available
smb: \> q
samba:~#
samba:~# smbclient //samba/Отдел2 -Ugod%god
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.5.6]
smb: \> mkdir 12345
smb: \> dir
 .                                   D        0  Wed Jun 22 20:06:13 2011
 ..                                  D        0  Wed Jun 22 19:29:56 2011
 12345                               D        0  Wed Jun 22 20:06:13 2011

 41807 blocks of size 8192. 8204 blocks available
smb: \> q
samba:~#

Из примера мы видим, что user1 принадлежащий группе otdel1 имеет полный доступ в каталог //samba/Отдел1, при этом данный пользователь не имеет доступа на запись в каталог //samba/Отдел2, а пользователь god, являющийся хозяином обоих каталогов имеет полные права в оба каталога.

Конфигурация клиентов Windows XP

  1. Для конфигурации настроек стека протоколов TCP/IP используется DHCP. DHCP назначает всем клиентам Windows адрес WINS-сервера 192.16.3.1.
  2. Включите компьютер в домен Windows NT4DOMAIN. В качестве имени администратора домена необходимо использовать пользователя root и соответствующий пароль. Перезагрузите компьютер после включения в домен.
  3. В данной конфигурации возможно использовать рабочие станции, не включенные в домен (например, мобильные ноутбуки). При создании локальной учетной записи, с тем же самым именем пользователя и паролем, которое были созданы для домена Windows, пользователь может локально войти на компьютер и получить прозрачный доступ к сетевым ресурсам, как если бы он авторизовался как доменный пользователь. Данные компьютеры необходимо включить рабочую группу DOMAIN. Так же, для них не будет работать логон-скрипт и монтирование сетевого диска.
  4. Включив какого-либо пользователя в группу Domain Admins, вы даете ему право на управление данным доменом. При этом, с данным правами возможно добавление и управление пользователями с помощью графической утилиты от мелкософт – SRVTOOLS.EXE.

Выводы

Итого, в данной статье описана пошаговая инструкция поднятия простейшего контроллера домена Windows уровня NT4. Настроив данную схему работы сети, Вы получаете более удобное управление и централизованное хранение учетных записей пользователей, возможность разграничивать доступ к сетевым ресурсам на основании группы пользователя, а так же минимальные возможности управления доменными рабочими станциями (с помощью логон-скрипта). Недостатки данной схемы очевидны, начинаю от невозможности распределять доступ к сетевым ресурсам для нескольких групп, заканчиваю безопасностью данного решения (как-никак NTLM :). Но учитывая масштабы и отсутствие подключения к интернету – данная схема вполне достойна на существование в небольшом офисе.

P.S. За данное решение огромное спасибо ресурсу http://www.samba-doc.ru/ и книге Samba-3 by Example. John Terpstra.

С Уважением, Mc.Sim!

li/pre




Теги: , , , , , , ,

54 комментария к “Домен NT4 на SAMBA”

  1. Миша
    28 июля, 2011 at 10:49
    1

    Не понимаю:

    Разве мы поднимали Active Directory? %)

    • 28 июля, 2011 at 14:30
      2

      Не понял вопроса.

  2. comstream
    5 августа, 2011 at 23:09
    3

    Здравствуйте ! Спасибо за интересную и полезную статью. Только начинаю разбираться в теме, очень долго искал именно алгоритм создания домена NT4 без всяких LDAP, AD и прочего.
    Если не затруднит несколько вопросов:
    1. Из недостатков вышеописанного решения вы указываете протокол NTLM. Так понимаю он недостаточно безопасен по каким-то причинам ?
    2. И еще “…и отсутствие подключения к интернету ..”. Собираюсь использовать данную схему как раз в сети где есть интернет-шлюз. То есть в данной ситуации схема не очень безопасна ?

    • 6 августа, 2011 at 16:13
      4

      Доброго времени.
      По первому вопросу:
      NTLM по сравнению с Kerberos (который используется в домене Active Directory для аутентификации) легко подбираемый. Но в маленьких организациях, где безопасность не стоит на первом месте, этого протокола вполне достаточно. Я коротко рассматривал данные протоколы в статье.
      По второму вопросу:
      да, данная схема не безопасна по причине опять же использования NTLM. Но, как я говорил, если безопасность не стоит во главе, то данной схемы вполне достаточно для небольшой организации, даже при использовании подключения к интернету. Главное – грамотно настроить шлюз.

  3. comstream
    11 августа, 2011 at 00:28
    5

    Начнем с простого. Тем более что SAMBA 4 не в альфа появится видимо не скоро. Пришлось помучится с командами chmod и chmod. Сделал все один в один как у вас но сразу не пошло: пользователь добавленный в группу Отдел1 успешно подключался, но при попытке создания папки выдавалось NT_STATUS_ACCESS_DENIED making remote directory. В итого через mc задал права и заработало !!!. Видимо где то накосячил в начале.
    Если можно еще пара вопросов:
    1. Можно ли с помощью домена NT4 разрешать/запрещать печать на машине включенной в этот домен.
    2. А если на ней стоит Ubuntu с SAMBA’ой?

    • 11 августа, 2011 at 10:28
      6

      Я тоже долго боролся с NT_STATUS_ACCESS_DENIED. Несколько раз перенастраивая домен по новой… С каждым разом понимание было все ближе и ближе :) 1. Можно, создав в smb.conf общий ресурс не [printers] – для всех принтеров, а для каждого принтера индивидуально [Printer_name] и задав разрешенных пользователей через valid users.
      2. Тоже можно, но нужно настроить доменную авторизацию через PAM для логина в KDE или GNOME (Смотря что используете в виде исков). И рулить уже на основании прав доменных пользователей.

      • comstream
        11 августа, 2011 at 11:18
        7

        Меня порой удивляет Linux в этом плане, делаешь все по мануалу, все равно сразу не получится, где-то как-то ошибка вылезет, где-то пакет не той версии и т.п. :) И понимание вовсе даже и не приближается.
        Вопрос по поводу доменной авторизации: в разных источника указывается что нет возможности сделать прозрачную авторизацию Linux в домене NT4 через NTLM. То есть к домену вроде как подключается, но при попытке зайти на любую шару выдает запрос пароля. На Windows такого не происходит.
        А вот в AD Linux при авторизации через Kerberos все проходит на ура.
        Так ли это ? Или вводят народ в заблуждение ?
        Спасибо Вам за информацию !

        • 11 августа, 2011 at 11:21
          8

          А вот по этому вопросу я, честно говоря, не готов ответить, т.к. руки не дошли еще до организации авторизации линуксовых машин, как рабочих станций в домене NT4.

  4. comstream
    11 августа, 2011 at 11:53
    9

    Буду продолжать поиски Надеюсь удастся найти рабочую схему

  5. gard
    5 марта, 2012 at 12:10
    10

    Здравствуйте! =)
    Просветите пожалуйта пару моментов. Материал очень интересный =) но кое что непонятно. Расскажите подробнее о взаимосвязи параметров:
    logon script = scripts\login.bat
    logon path =
    logon drive = X:
    domain logons = Yes
    И ресурсов [homes] и [netlogon]. Я так и не понял что за login.bat и где именно он лежит, у [homes] не указан path. Logon drive это видимо не диск для домашнего каталога все таки, как я понимаю если мы хотим перемещаемые профили, то надо использовать уже logon path. А вообще все заработало, клиентская машинка у меня в домен вошла, к ресурсам своим доступ получила и получила смонтированный диск X:. Подскажите также, существует ли способ смонтироват несколько сетевых дисков (самба-шар) при входе клиента в домен?

    Заранее спасибо, и спасибо за интересный материал. Читал самба от простого к сложному (в примерах) там видимо что-то где-то упущено, а вот по вашему материалу уже более понятно. =)

    • gard
      5 марта, 2012 at 13:05
      11

      Кажется разобрался, сделал так, в smb.conf:
      logon script = login.bat
      logon path =
      #logon drive = X: – убрал под комментарий

      [netlogon]
      comment = Сетевой Logon сервис :)
      path = /etc/samba/netlogon
      read only = Yes

      А в /etc/samba/netlogon/login.bat прописал пути личной и общей шаре:
      @echo off
      net use h: \\tux\home
      net use z: \\tux\share
      чтобы они монтировались как сетевые диски. =)

      • 5 марта, 2012 at 13:17
        12

        Все верно :)

    • 5 марта, 2012 at 13:15
      13

      Добрый день!
      domain logons -заставляет работать самбу как домен NT4, пустой параметр logon path указывает на то, что перемещаемые профили использоваться не будут. Если в нем указать путь, например в формате /logon/%U, то все доменные пользовательские профили будут использовать перемещаемые профили, но тут нужно будет поколдовать с правами на папку /logon. Параметр logon script задает путь к стартовому скрипту, который при входе пользователя в Windows загрузится на клиентску машину и выполнится. Этот скрипт должен лежать в каталоге, который задан параметром path в ресурсе [netlogon] (то есть ка-то так: [netlogon]\scripts\login.bat). Очень важно этот батник редактировать из Windows. Либо из Linux, но потом преобразовывать в Windows-формат утилитой unix2dos. В netlogon можно и не указывать этот параметр, тогда будет использоваться путь по умолчанию. можно посмотреть командой testparm -sv.
      Если у [homes] не указан path, то он берется из параметра template homedir, который можно узнать, выполнив testparm -sv, либо используется домашний каталог Linux – /home (на счет последнего – не уверен…)

    • 5 марта, 2012 at 13:16
      14

      Подключать дополнительные шары можно с помощью того же logon script, в котором использовать команду net use. Справка по ней есть в венде.

  6. gard
    5 марта, 2012 at 13:49
    15

    Спасибо вам за развернутый ответ, теперь все стало понятно. На работе у нас все документы хранятся в общих папках рабочей группы, небольшой филиал ВУЗа, вот я и подумал, что надо организовать хранение файлов в более защищенном месте. Доменные учетные записи и самбовые шары с ограничением доступа – самое то. Не уверен только, что стоит использовать перемещаемые профили. =)

    • 5 марта, 2012 at 13:56
      16

      Да, перемещаемые профили это штука удобная, но трудоемкая. Как вариант, если не хочется самому с самбой возиться, можно использовать готовое решение вроде Zentyal. Хотя тоже требует определенных навыков. Когда сам разбираешься – легче справиться с последующими проблемами.

  7. gard
    5 марта, 2012 at 14:04
    17

    Ну думаю, что справлюсь и сам, штат у нас небольшой, все можно сделать просто руками с терминала, главное – задокументировать что и как сделано. )

    • 5 марта, 2012 at 15:43
      18

      задокументировать что и как сделано

      Это самое главное :)

  8. gard
    11 марта, 2012 at 10:46
    19

    Здравствуйте еще раз, простите за кучу вопросов, но возникла еще парочка. В общем сегодня ненароком столкнулся с проблемой ввода нового компьютера в домен, как я сейчас понял, я просто удалил из конфигурационного файла строки:

    add user script = /usr/sbin/useradd -m -G users ‘%u’
    delete user script = /usr/sbin/userdel -r ‘%u’
    add group script = /usr/sbin/groupadd ‘%g’
    delete group script = /usr/sbin/groupdel ‘%g’
    add user to group script = /usr/sbin/usermod -a -G ‘%g’ ‘%u’
    add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody ‘%u’

    Видимо причиной ошибки у меня было то, что я убрал add machine script. Правильно ли я понимаю, что при вводе любого компьютера в домен Samba спрашивает у него имя и автоматически выполняет add mashine script, добавляя имя этого компьютера в unix-пользователи?

    Мне не совсем понятно назначение этих скриптов. Видимо часть из них служат для управления пользователями с помощью утилиты из пакета SRVTOOLS для Windows? Но видимо, часть из них выполняется автоматически. Однако, ведь чтобы добавить samba-пользователя, нужно: 1) добавить unix-пользователя, 2) добавить его в базу samba (например через smbpasswd -a). В вышеприведенных скриптах добавляется только unix-пользователь. Как он далее добавляется в базу samba? Я добавление пользователей делаю простым скриптом, который создает пользователя, выполняет smbpasswd -a, создает каталоги пользователя. Скрипт читает файл в коротом построчно прописаны? пользователь пароль группа. Но тут что-то другое.

  9. gard
    11 марта, 2012 at 13:02
    20

    Кажется понял, часть этих параметров помогает утилитам типа RSVTOOLS управлять пользователями и группами, а вот add machine script работает по иному. Дело в том, что чтобы авторизовать пользователя в домене, сначала нужно обязательно добавить в домен локальный компьютер, за который сел пользователь. Есть два (на самом деле 3) пути:
    1) Ручной способ (добавляем пользователя “имяКомпьютера$”, блокируем его и добавляем его как машинного в smbpasswd)
    useradd -g machines -N -M -s /bin/false имяКомпьютера$
    passwd -l имяКомпьютера$
    smbpasswd -a -m имяКомпьютера$
    2) “Автоматический” и рекомендуемый способ (прописать в [global] секцию smb.conf параметр:
    add machine script = useradd -M -N -s /bin/false -g machines %u

    Одного не могу понять почему в smb.conf мы указываем в параметре скрипта только добавление unix-пользователя (компьютера). Самба сама дальше добавляет его в свои пользователи (к примеру через smbpasswd -a -m)? Почему в этом скрипте не пишется полная последовательность ручных действий.

    • gard
      11 марта, 2012 at 13:18
      21

      Ну все, разобрался. Уже отписался на УбунтуФоруме, но напишу и тут. =) Посмотрел ман по самба. Привожу свой вольный перевод:
      ——————
      Третий (и рекомендуемый) путь создания Машинных Аккаунтов это простое разрешение Samba-серверу создавать их когда это необходимо во время присоединения клиента к домену. Однако, при этом для каждого Машинного Samba-аккаунта требуется корреспондирующий UNIX-аккаунт, обычно используется метод автоматического создания UNIX-аккаунтов, это описывается в smb.conf через “add machine script”. Хоть это и не обязательно, корреспондирующие UNIX-аккаунты могут быть созданы вручную.

      Пример из Red Hat Linux:
      [global]
      add machine script = /usr/sbin/useradd -d /var/lib/nobody -g 100 -s /bin/false -M %u
      ——————
      То есть еще раз: Самба сама автоматически “подключает” машинные аккаунты (то, что делает smbpasswd -a -m), при одном условии: в системе должен присутствовать соответствующий Unix-аккаунт для машины.

      • 11 марта, 2012 at 15:39
        22

        Отличный разбор. Уважаю людей, которые самостоятельно способны разобраться в документации :)
        P.S. Недавно мне пришлось восстанавливать конфигурацию samba со сгоревшего железа на новое. Ох как я пожалел, что не бэкапил каталоги /var/cache/samba, /var/spool/samba и /var/lib/samba. В которых хранится вся доменная конфигурация в файлах tdb и ldb. Одного smb.conf ох как недостаточно. Так что, если придется бэкапить конфигурацию домена и используется бекэнд tdbsam для паролей и соответствия SID<->UNIX, то желательно бэкапить вместе с smb.conf все каталоги, которые покажет команда testparm -sv | grep var.

        • gard
          11 марта, 2012 at 22:04
          23

          Да, это надо иметь в виду, спасибо вам за совет =). Но начать я думаю надо с raid1 массива и ИБП для сервера. Сейчас копаю в сторону перенаправления каталогов (путем использования дефолтного профиля в [netlogon] или простого задания параметров реестра через login.bat). Насчет перемещаемых профилей даже с перенаправляемыми каталогами что-то стал вомневаться… Не хочу воевать с неверной синхронизацией автономных файлов при погасании света в грозу и отпадывании клиентов. Думаю отключить вообще автономные файлы на клиентах и ограничиться перенаправлением Документов и Рабочего стола в личные каталоги пользователей на сервере.

          • 12 марта, 2012 at 09:52
            24

            Да, синхронизация может работать некорректно, т.к. unix атрибуты файловой системы и время доступа может некорректно обрабатываться клиентами Windows и из-за этого могут возникать проблемы при синхронизации. К тому же для не слишком грамотного пользователя объяснить, что такое синхронизация и как она работает – это тяжело :)

  10. gard
    21 марта, 2012 at 14:36
    25

    Здравствуйте еще раз!
    Простите, наверное уже замучал вас вопросами, но хочу спросить еще кое что.

    Вы в статье делаете самбу WINS-сервером, в конфиге dhcp-сервера в опции domain-name задается доменное имя (видимо участка сети), такое же как имя домена samba. Экспериментируя на работе, я сделал аналогично, теперь компьютеры можно пинговать по netbios-именам, однако, если пинговать windows-компьютер как ping comp.domain – это уже не работает.

    И я немного не допонимаю суть связки WINS-сервера и директивы domain-name dhcp-сервера. Вот с опцией option netbios-name-servers все кажется понятно, прямое указание на WINS-сервер.Но в чем сакральный смысл директивы domain-name с dhcp-сервера.

    • 21 марта, 2012 at 15:43
      26

      День добрый. Хороший вопрос. Я бы сказал – отличный :) Тут важно понимать разницу между WINS и DNS.
      А так же, необходимо понимать принцип работы DNS.
      Эти 2 понятия между собой с технической точки зрения – почти не взаимодействуют. (“почти” – потому что в одной сети могут работать и WINS и DNS и использовать одинаковые имена машин)
      WINS работает по протоколу NetBios, DNS работает несколько “выше” в модели OSI. Кроме того, WINS – это “плоская” структура имен, то есть она не умеет работать с FQDN именами вида comp.DOMAIN..
      В статье я привел “типовой” конфиг DHCP и параметры domain-name-servers и domain-name будут актуальны только если на хосте с самбой установлен DNS сервер и он обслуживает зону “DOMAIN.”. Ну или хотя бы кэширующий DNS-сервер, но при кэширующем не будет актуален параметр domain-name “DOMAIN”.
      В моем примере сеть работает только на WINS, то есть разрешение имен будет работать только вида comp (без .DOMAIN).
      В целом, разрешение имени в Вашем случае можно описать так (используется протокол NetBIOS через TCP/IP):
      1. Определяется, не превышает ли длина имени 15 символов и не содержатся ли в нем точки (.). В любом из этих случаев делается запрос имени к службе DNS.
      – В Вашем случае, при обнаружении точки, хост пытается опросить DNS, которого не существует. Соответственно, результат – никакой.
      2. Определяется, не хранится ли имя в кэше удаленных имен на компьютере клиента.
      3. Выполняется обращение к настроенным для данного клиента WINS-серверам и делается попытка разрешить имя с помощью службы WINS.
      4. Используются локальные широковещательные рассылки по протоколу IP в подсети.
      5. Проверяется файл Hosts.
      6. Запрашивается DNS-сервер.
      В итоге, разрешение имени завершается неудачно на первом шаге.
      Как-то так…
      Надеюсь, понятно объяснил…

    • 21 марта, 2012 at 18:39
      27

      дополнил конфиг dhcp соответствующим комментарием.

      • gard
        21 марта, 2012 at 20:08
        28

        Да, спасибо за развернутый ответ, все стало понятно. Надо будет попробовать поднять bind для привязки к самбе (и не только), там как я понимаю будет ddns, для авторегистрации разрешенных клиентов в локальной днс. Сейчас у меня работает dns, это dnsmasq, пытался поднять bind, но не нашел как на нем сделать одну жизненно мне необходимую вещь. Надо читать книжку, в типовых примерах я этого не нашел, но в планах есть. =)

        • 21 марта, 2012 at 20:16
          29

          да, что-то вроде ddns + dhcp, но не приходилось к самбе такое прикручивать, поэтому вряд ли тут что-то подскажу…

        • 21 марта, 2012 at 20:18
          30

          вот тут http://samba-doc.ru/samba3example/01sec.html#secdhcpdns хорошие примеры, но нужно их адаптировать под конкретную конфигурацию…

          • gard
            21 марта, 2012 at 20:31
            31

            Да, сегодня как раз это почитывал, надо будет разобраться. =) Хотя мне для моей конторки хватит конечно и WINS.

  11. maniakmtb
    6 апреля, 2012 at 10:43
    32

    server:~# bash
    samba:~#

    подскажите что происходить при данном действии.

  12. gard
    11 мая, 2012 at 08:33
    34

    Здравствуйте!
    Прокопался почти месяц и тестово запустил samba+LDAP, возможно вам будет интересно: http://dl.dropbox.com/u/4427808/story/ldapSamba.odt =) В будущем хочу сделать это на Debian, но в общем и Ubuntu LTS мне кажется хорошим вариантом, если ставить только заплатки безопасности.

    • 11 мая, 2012 at 12:06
      35

      Спасибо, gard. Вполне неплохо написано. Единственный нюанс – человеку, у которого знаний в LDAP чуть больше чем ноль (например мне ) ) можно будет сломать голову :)

    • 11 мая, 2012 at 12:08
      36

      Если хочешь, размещу твой мануал вложением в статье. Только предварительно оформи его в pdf.

      • gard
        12 мая, 2012 at 21:28
        37

        Есть в pdf: http://dl.dropbox.com/u/4427808/story/ldapSamba.pdf
        Размещать ли его вложением, прямо затрудняюсь ответить. В принципе с этим материалом можно делать что угодно. Я его выложил на Убунту-форуме, вдруг кому то пригодится. Что интересно… сегодня попробовал развернуть описанную схему на Debian, если использовать libnss-ldapd вместо libnss-ldap (как в хаутушке), то настройка упрощается, уже не нужно создавать описание БД с корневым элементом для LDAP, конфигуратор задаст пару вопросов и сделает все сам (и прямо точно так же как в хаутушке, вот откуда оказывается умолчальные значения параметров БД =). Мне кажется в хаутушке есть пара неточно (даже неверно) отвещенных мной моментов. К примеру misc-схема вообще оказывается не нужна для текущей задачи. =) Ну в общем нужно пробовать и тогда все становится более менее понятно. Ну и не мог я не поделиться, все таки вы мне порядком помогли в копании с Samba =). Используйте хаутушку как хотите, если у вас дойдут руки до тестирования этого всего, к примеру на том же Debian, то буду только рад, если на основе одной появится другая, более точная и актуальная хаутушка.

        • 14 мая, 2012 at 20:40
          38

          На Debian SAMBA+LDAP очень вряд ли буду это делать. Только если в качестве спортивного интереса, но на это нужно время, которое можно потратить на более актуальные задачи :) Да и мое ИМХО – делать домен на SAMBA в сети с количеством пк\пользователей более 10-30 это довольно трудоемко, а для 10-30 вполне справится с такой задачей и хранение учеток в tdbsam. Хотя… Если хорошо разбираешься в LDAP, то однозначно это удобней, чем tdbsam.

          • gard
            15 мая, 2012 at 14:41
            39

            Разбираюсь я наверное не сказать что хорошо, но принцип работы стал понятен. У меня мысль еще в том, чтобы прикрутить на эти же учетки jabber-аккаунты, сейчас жабер крутится на internal методе аутентификации. Сегодня как раз попрообвал привязать его к ldap, сделал даже имитацию vcard, чтобы в ростере пользователи сидели осмысленные имена, а не jid. И удобно учетными записями управлять из веб-интерфейса. Пользователей у меня будет всего с десяток, можно конечно было бы обойтись и без ldap, схема довольно сильно упрощается. Но с другой стороны, почему бы и не попробовать с ldap. =)

            • gard
              15 мая, 2012 at 14:43
              40

              Дойдет до того, что поставлю Zentyal и буду лежать на боку :-D но покопаться было все равно интересно.

              • 15 мая, 2012 at 18:45
                41

                Да, Zentyal, это более чем законченное решение для размера такой сети :)

            • 15 мая, 2012 at 18:44
              42

              ДА, я тоже jabber хотел в перспективе настроить в связке с LDAP из AD, но это в далекой перспективе. Об этом писал еще в самом первом посте )

  13. Михаил
    6 августа, 2012 at 22:14
    43

    Здравствуйте, Mc.Sim. Спасибо за ваши статьи, самое полезное что нашел в интернете по теме простых примернов настройки dhcp, dns, samba (главное с объяснением основ, что очень хорошо для начинающих).
    Возник такой вопрос, думаю простой, но для меня не очевидный:
    Старался во всем следовать приведенному выше примеру, но при попытке аутентификации через smbclient получаю сообщение NT_STATUS_ACCESS_DENIED на всех логинах кроме root. Подскажите, где мог ошибиться. Заранее спасибо)

    • 9 августа, 2012 at 10:08
      44

      Доброго времени, михайл.
      Могу предположить, что были допущены ошибки при указании паролей при выполнении smbpasswd.
      Следующая ошибка может быть допущена – при задании прав на файловой системе на каталоги, которые расшарены вы самба.

      • Михаил
        9 августа, 2012 at 19:41
        45

        Понял вас, спасибо, проверю эти места.

  14. Михаил
    7 августа, 2012 at 13:44
    46

    И еще 1 вопрос: после настройки по выше приведенному описанию, перестал работать выход в интернет на другом интерфейсе. В чем может быть проблема?

    • 9 августа, 2012 at 10:11
      47

      Что в данном контексте понимается под словами “другой интерфейс” и “перестал работать”? Как это проявляется?

      • Михаил
        9 августа, 2012 at 19:39
        48

        Другой интерфейс, в смысле другой разъем Ethernet, в него подключен кабель от провайдера, перестали открываться страницы. Проблему уже решил, дело было в изменениях nsswitch.conf. Изменил его на дефолтное состояние. В связи с этим появился вопрос, как сохранить вашу конфигурацию контроллера домена и при этом сохранить доступ в интернет (в перспективе “раздать” его на клиентские машины)?

        • 10 августа, 2012 at 00:33
          49

          На самом деле, самба не использует резолвинг имен по DNS, но наличие записи указывающей использование данной службы в NSS не должно помешать.
          Думаю, что можно без проблем прописать в nsswitch.conf:
          hosts: files wins dns
          и все должно работать.

  15. Zenith
    3 сентября, 2012 at 15:08
    50

    Спасибо, Вам, за прекрасную статью, да и за весь блог в целом.
    Для себя нашел очень много полезного. Продолжайте в том же духе. *THUMBS UP*

    Kerberos (который используется в домене Active Directory для авторизации)

    Цербер это протокол аутентификации.

    • 6 сентября, 2012 at 20:47
      51

      Пожалуйста, да, аутентификация будет в данном контексте – корректней…

  16. Fess
    23 августа, 2013 at 17:30
    52

    Все перепробовал, никак не могу понять, в чем ошибка:

    При попытке выполнить

    net rpc rights grant
    "Domain Admins"
    SeMachineAccountPrivilege
    SeTakeOwnershipPrivilege
    SeBackupPrivilege
    SeRestorePrivilege
    SeRemoteShutdownPrivilege
    SePrintOperatorPrivilege
    SeAddUsersPrivilege
    SeDiskOperatorPrivilege -Uroot

    и ввода пароля рута, выдает следующее:
    Could not connect to server 127.0.0.1
    Connection failed: NT_STATUS_CONNECTION_REFUSED

    На 3 серверах перепробовал, подскажите, куда копать?

    • 5 сентября, 2013 at 21:59
      53

      Здравствуйте.
      Покажите Ваш файл hosts.
      и вывод команды netstat -nap.

    • 5 сентября, 2013 at 22:01
      54

      дополнительно, покажите nsswitch.conf

Написать комментарий