Директор Иван Иваныч хороший директор, и через какое-то время дела фирмы пошли в гору, штат сотрудников стал расширяться,
в фирме образовалось две структуры, бухгалтерских отдел и финансовый отдел. А сотрудников стало уже почти 50 человек, а через
год их может стать около сотни. Посовещавшись, вы с директором решили внедрить домен, при такой сети это позволить гораздо
успешнее и проще управлять сетью. Так же будет отныне решено использовать сервер dhcp, что в такой сети будет являться хорошим
решением, а также позволить пользователям ноутбуков не беспокоиться, когда их настройки были перенастроены при подключении к
сетям ваших деловых партнеров.
пользователь director
будет владельцем всех ресурсов.
(к началу страницы)
Предварительно делаем обновление системы, для этого подключаем нужный репозиторий и выполняем команды:
apt-get update
apt-get dist-upgrade
|
Без обновления пакет Samba-3.4.8. имеет шансы при установке выдавать ошибки и не установиться.
Я не смог собрать из исходников новую Samba, поэтому я воспользовался любезно предоставленной сборкой Василия Терешко с сайта
http://end.kiev.ua/linux/alt/tolmi-5.1/i586/RPMS.tolmi-5.1/. Скачиваем отсюда следующие пакеты и устанавливаем
в представленном ниже порядке командой:
apt-get install имя_пакета
ctdb-1.0.113-alt2.i586.rpm
ctdb-devel-1.0.113-alt2.i586.rpm
libtalloc-2.0.0-alt1.i586.rpm
libtalloc-devel-2.0.0-alt1.i586.rpm
samba-common-3.4.8-alt1.i586.rpm
samba-3.4.8-alt1.i586.rpm
samba-client-3.4.8-alt1.i586.rpm
|
Например:
apt-get install ctdb-1.0.113-alt2.i586.rpm
|
Если все прошло хорошо, проверьте, что пакет samba-3.4.8-alt1.i586.rpm
нормально установился:
rpm -qa samba
samba-3.4.8-alt1
|
Пока отложим дальнейшее конфигурирование сервера Samba, и займемся сервером dhcp.
(к началу страницы)
Выполните команду hostname
, откликом должно быть:
# hostname
altserver.localdomain
|
Внесите в файл /etc/sysconfig/network
запись
HOSTNAME = altserver.firma.org
|
Так как ваш сервер будет обслуживать два сегмента сети, пользователи могут захотеть получить доступ из одного сегмента в
другой, поэтому будет лучше включить маршрутизацию, для этого в файле /etc/net/sysctl.conf
исправьте значение
параметра
net.ipv4.conf.lo.forwarding = 0
|
на
net.ipv4.conf.lo.forwarding = 1
|
перезапустите сеть:
Установите сервер dhcp:
apt-get install dhcp-server
|
Настройка сервера dhcp в альтлинукс осуществляется в файле /etc/dhcp/dhcpd.conf
. После установки пакета
dhcp-server
вы найдете в этой директории файл dhcpd.conf.sample
. Давайте исправим этот
файл под наши нужды.
Для наших задач сервер должен:
точно также предположим, что в подсети финансистов компьютеру Иван Иваныча будет назначаться адрес динамически, но всегда
один и тот же - 192.168.2.40
.
Перейдите в папку /etc/dhcp/
и получите файл dhcpd.conf
:
# cd /etc/dhcp/
# cp dhcpd.conf.sample dhcpd.conf
|
Теперь приведем файл dhcpd.conf
к такому состоянию:
# See dhcpd.conf(5) for further configuration
#говорим не использовать динамический dns
ddns-update-style none;
#задаем время аренды IP-адреса по умолчанию, в секундах
default-lease-time 86400;
#задаем максимальное время аренды, если по истечению этого времени
#клиент не сделал запрос на аренду, его ip считается незанятым и
#может быть назначен другому клиенту
max-lease-time 172800;
#задаем адрес сервера времени
option ntp-servers 192.168.1.7;
#если есть поддержка NIS, можно задать домен
option nis-domain "firma.org";
#задаем имя домена
option domain-name "firma.org";
# список dns-серверов, так windows будет спокойнее
option domain-name-servers 192.168.1.7, 192.168.2.7;
# список wins-серверов
option netbios-name-servers 192.168.1.7, 192.168.2.7;
# описание первой подсети, сначала идет ее адрес и маска
subnet 192.168.1.0 netmask 255.255.255.0 {
# шлюз, так как клиенты из подсети 192.168.1. будут ходить в подсеть 192.168.2.
option routers 192.168.1.7;
option subnet-mask 255.255.255.0; #
range dynamic-bootp 192.168.1.31 192.168.1.230; #
# говорим назначать принтеру один и тот же ip по mac-адресу
host hp1320n
{
hardware ethernet 08:09:55:56:05:58;
fixed-address 192.168.1.52;
}
}
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.7;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.2.31 192.168.2.230;
host win7boss
{
hardware ethernet 09:10:55:57:58:23;
fixed-address 192.168.1.40;
}
}
|
(к началу страницы)
Сначала добавим пользователя root
в базу данных Samba, этот пользователь администратор сервера и будет
администратором домена. Перед этим, с учетом того, что мы используем в этом примере пакет от Василия Терешко с сайта
http://end.kiev.ua/linux/alt/ создадим папку
# mkdir /var/lib/samba/private
|
именно там будет храниться база данных паролей, учтите, это нужно лишь для этого пакета, этот путь задается при сборке, и
Василий Терешко задал этот путь там, как правило база данных хранится в папке /etc/samba
(однако не исключено,
что этот путь будет во всех новых сборках).
Теперь уже непосредственно добавляем пользователя root
, причем его пароль можно и желательно задать отличный от
пароля root
системы. Это пароль администратора домена Windows. Никогда не удаляйте эту учетную запись с ее
паролем из бэкенда паролей после того, как будут инициализированы группы домена Windows.
# smbpasswd -a root
New SMB password:
Retype new SMB password:
tdbsam_open: Converting version 0.0 database to version 4.0.
tdbsam_convert_backup: updated /var/lib/samba/private/passdb.tdb file.
account_policy_get: tdb_fetch_uint32 failed for field 1
/(min password length), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 2
/(password history), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 3
/(user must logon to change password), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 4
/(maximum password age), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 5
/(minimum password age), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 6
/(lockout duration), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 7
/(reset count minutes), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 8
/(bad lockout attempt), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 9
/(disconnect time), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 10
/(refuse machine password change), returning 0
Added user root.
|
Проверьте, что в системе есть файл присоединения имен пользователей (username map file) (в моем альте он был по умолчанию),
который позволяет учетной записи root
быть ассоциированным с учетной записью administrator
из
Windows среды, следующего содержания:
# cat /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
|
Теперь создадим нужные нам группы UNIX и присоединим их к группам windows, тоже сделаем для общеизвестных групп
домена Microsoft Windows.
Примечание: под словом присоединим подразумевается to map, и в слэнге это звучить как "примапим",
мапить группы, мапить пользователя.
Нужные нам группы это группа пользователей бухгалтерии buhgroup
и группа пользователей финансового отдела
fingroup
.
Сделаем скрипт, который облегчит нам данную задачу, создадим файл:
touch /etc/samba/mapgroup.sh
|
Заполним его таким содержимым:
#!/bin/sh
#
# файл присоединения групп windows к группам unix /etc/samba/mapgroup.sh
#
# создадим группы бугхалтерии и финансового отдела
groupadd buhgroup
groupadd fingroup
# присоединим общеизвестные Windows Domain Groups к UNIX-группам
net groupmap add ntgroup="Domain Admins" rid=512 unixgroup=root type=d
net groupmap add ntgroup="Domain Users" rid=513 unixgroup=users type=d
net groupmap add ntgroup="Domain Guests" rid=514 unixgroup=nobody type=d
# присоединим группы домена
net groupmap add ntgroup="Buhg staff" unixgroup=buhgroup type=d
net groupmap add ntgroup="Fin staff" unixgroup=fingroup type=d
|
Сделаем исполняемым и запустим его:
# cd /etc/samba/mapgroup.sh
# chmod +x mapgroup.sh
# ./mapgroup.sh
|
Вывод должен быть примерно такой:
# ./mapgroup.sh
Successfully added group Domain Admins to the mapping db as a domain group
Successfully added group Domain Users to the mapping db as a domain group
Successfully added group Domain Guests to the mapping db as a domain group
No rid or sid specified, choosing a RID
Got RID 1001
Successfully added group Buhg staff to the mapping db as a domain group
No rid or sid specified, choosing a RID
Got RID 1002
Successfully added group Fin staff to the mapping db as a domain group
|
Проверим, какие у нас теперь есть группы:
# net groupmap list
Domain Admins (S-1-5-21-1882585832-1723636817-256479379-512) -> root
Fin staff (S-1-5-21-1882585832-1723636817-256479379-1002) -> fingroup
Domain Users (S-1-5-21-1882585832-1723636817-256479379-513) -> users
Domain Guests (S-1-5-21-1882585832-1723636817-256479379-514) -> nobody
Buhg staff (S-1-5-21-1882585832-1723636817-256479379-1001) -> buhgroup
|
Примечание: если вам что-то не понравилось, удалить все можно таким скриптом:
#!/bin/sh
#
# файл отсоединения групп windows от групп unix /etc/samba/mapgroupdel.sh
#
# отсоединим общеизвестные Windows Domain Groups к UNIX-группам
net groupmap delete ntgroup="Domain Admins"
net groupmap delete ntgroup="Domain Users"
net groupmap delete ntgroup="Domain Guests"
# отсоединим группы домена
net groupmap delete ntgroup="Buhg staff"
net groupmap delete ntgroup="Fin staff"
|
Вывод после выполнения скрипта будет такой:
Sucessfully removed Domain Admins from the mapping db
Sucessfully removed Domain Users from the mapping db
Sucessfully removed Domain Guests from the mapping db
Sucessfully removed Buhg staff from the mapping db
Sucessfully removed Fin staff from the mapping db
|
А команда net groupmap list
не должна будет что-либо показать.
Теперь создадим наших пользователей, как мы делали это в
примере 2, соответственно сотрудников бухгалтерии помещаем в группу
buhgroup
, сотрудников финансового отдела в группу fingroup
.
Таблица 2.1. Список сотрудников фирмы
Имя сотрудника |
Учетная запись |
Пароль |
Имя личной папки |
Каталог на файл-сервере |
Рабочая станция |
Иван Иваныч |
director |
dirIvan1 |
director |
/firmafiles |
win7boss |
Петр Авдеич |
finansist |
finPetr2 |
finansist |
/firmafiles/finansist |
winXPfin |
Зоя Федоровна |
buhgalter |
buhZoya3 |
buhgalter |
/firmafiles/buhgalter |
winXPbuh |
Василий Николаич |
glfinansist |
glfinVas22 |
glfinansist |
/firmafiles/finansist |
win7glfin |
Елена Викторовна |
glbuhgalter |
glbuhEl33 |
glbuhgalter |
/firmafiles/buhgalter |
win7glbuh |
Согласно таблице добавим пользователей:
# useradd -m -G buhgroup -c "Зоя Федоровна" buhgalter
# passwd buhgalter
Enter new password:
Re-type new password:
# smbpasswd -a buhgalter
New SMB password:
Retype new SMB password:
Added user buhgalter.
|
Иван Иваныча добавляем командой
# useradd -m -c "Иван Иваныч" director
# passwd director
Enter new password:
Re-type new password:
# smbpasswd -a director
New SMB password:
Retype new SMB password:
Added user director.
|
Тем самым не включая его ни в какую группу, что впрочем не помешает ему просматривать все папки , так как он будет
владельцем всех общих папок.
В итоге в базе данных Samba у меня такие пользователи:
# pdbedit -L
root:0:System Administrator
buhgalter:501:Зоя Федоровна
director:502:иван Иваныч
finansist:503:Петр Авдеич
glfinansist:504:Василий Николаич
glbuhgalter:505:Елена Викторовна
|
Чтобы еще какой-то сотрудник мог добавлять компьютеры в домен, он должен входить в группу root
.
Создадим учетную запись такого пользователя (odmin) обычным путем, а затем поместим его в группу root
.
Характеристики этого пользователя:
# id odmin
uid=506(odmin) gid=0(root) groups=0(root)
# pdbedit odmin -v
Unix username: odmin
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1882585832-1723636817-256479379-1012
Primary Group SID: S-1-5-21-1882585832-1723636817-256479379-512
Full Name: Администратор домена
Home Directory: \\altserver\odmin
|
Данный пользователь будет являться администратором домена, но не администратором вашего
сервера.
(к началу страницы)
Создадим общие ресурсы для групп, для этого создадим скрипт /etc/samba/addfolder.sh
такого содержания:
#!/bin/sh
#
#создадим структуру общих папок
#
mkdir -p /firmafiles/{buhfiles,finfiles}
chown -R root:root /firmafiles
chown -R director:buhgroup /firmafiles/buhfiles
chown -R director:fingroup /firmafiles/finfiles
chmod -R -R ug+rwx,o-rxw /firmafiles
|
Сделаем его исполняемым и выполним:
# chmod +x /etc/samba/addfolder.sh
# cd /etc/samba/
# ./addfolder.sh
|
В результате получили будущие общие папки, выставили на них владельцев и разрешения:
# ls -l / | grep firmafiles
drwxrwxr-x 4 root root 4096 Jul 8 15:31 firmafiles
# ls -l /firmafiles
total 8
drwxrwxr-x 2 director buhgroup 4096 Jul 8 15:31 buhfiles
drwxrwxr-x 2 director fingroup 4096 Jul 8 15:31 finfiles
|
(к началу страницы)
Создайте файл smb.conf
такого содержания:
[global]
workgroup = FIRMA
netbios name = ASERVER
server string = Server of FIRMA
passwd chat = *New*Password* %n\n*Re-enter*new*password* %n\n *Password*changed*
username map = /etc/samba/smbusers
syslog = 0
log file = /var/log/samba/log.%U.%m.%G.%I
max log size = 50
name resolve order = wins bcast hosts
interfaces = 192.168.1.7/24, 192.168.2.7/24, 127.0.0.1/24
bind interfaces only = Yes
time server = yes
# так как не касаюсь принтеров, у меня это закомментировано
# printcap name = CUPS
# show add printer wizard = No
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' '%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
os level = 64
preferred master = Yes
domain master = Yes
wins support = Yes
[homes]
comment = Домашняя директория
valid users = %S
read only = No
browseable = No
browsable = No
#[printers]
# comment = SMB Print Spool
# path = /var/spool/samba
# guest ok = Yes
# printable = Yes
# use client driver = Yes
# browseable = No
# browsable = No
[netlogon]
comment = Network Logon Service
path = /firmafiles/%U
valid users = %S
read only = No
[buhgroup]
comment = Файлы бухгалтерии
path = /firmafiles/buhfiles
valid users = %G
read only = No
[fingroup]
comment = Файлы фин.отдела
path = /firmafiles/finfiles
valid users = %G
read only = No
|
Cонфигурируйте NSS (диспетчер разрешения имен, name service switch), чтобы обрабатывать разрешение имен, основанное на WINS.
До тех пор, пока не используется DNS-сервер, безопасно удалить эту опцию из конфигурации NSS. Отредактируйте файл
/etc/nsswitch.conf
, (закомментировав верхнюю строку (#) и добавив нижнюю:
# hosts: files nisplus nis mdns4_minimal [NOTFOUND=return] dns mdns4 fallback
hosts: files wins
|
Проверьте конфигурационный файл smb.conf
утилитой testparm
на вопрос возможных ошибок, если они
обнаружаться, исправьте.
Теперь назначим серверам dhcp и samba запускаться при запуске/перезагрузке системы и запустим их:
# chkconfig --level 35 dhcpd on
# chkconfig --level 35 smb on
# chkconfig --level 35 nmb on
# service dhcpd start
Starting dhcpd service: [ DONE ]
# service smb start
Starting SMB services: Starting smbd service: [ DONE ]
# service nmb start
Starting NMB services: Starting nmbd service: [ DONE ]
|
Проверьте работоспособность сервера Samba теми же способами, которые были представлены в
примере 2.
Если вы допустили ошибку в файле /etc/dhcp/dhcpd.conf, сервер dhcp не запустится, и также сообщит о строке, в которой что-то
не так.
(к началу страницы)
Введение в домен клиентов с Windows XP происходит как обычно, подробнее можно почитать
здесь.
Проверьте, что демон nmb запущен, этот демон обрабатывает процессы регистрации имен и требования по разрешению (имен).
Перед введением в домен компьютера с установленной Windows 7 следует немного модифицировать реестр. Создайте файл
win7toSamba.reg
следующего содержания:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servic es\LanmanWorkstation\Parameters]
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000
|
И запустите (не забываем про администраторские права), нужные сведения будут добавлены.
После стандартной процедуры (я ввожу в домен от имени второго администратора odmin
) появиться сообщение об ошибке,
показанное на рисунке 3.1.
Рисунок 3.1. Сообщение о несуществующем домене
Не обращаем внимание, жмем Ок, после чего нам предлагается перезагрузиться, чтобы изменения вступили в силу.
Перезагружаемся, после этого компьютер с WINDOWS7 также благополучно входит в домен.
Примечание: соответствие имен компьютеров и выданных им IP адресов можно увидеть в файле /var/lib/dhcp/dhcpd.leases
(к началу страницы)
Основные достигнутые результаты:
При входе пользователя подключается диск X, который ведет в домашнюю папку этого пользователя на сервере (
заметьте, тут самое время внедрять квотирование), также на сервере
доступны общие папки, но в зависимости от принадлежности пользователя к бухгалтерам или финансистам (что и правильно);
Пинг по имени идет в пределах одной подсети (что также правильно, так как сервер WINS не должен заниматься
разрешением в других подсетях);
Пинг по IP идет как в пределах одной подсети, так и из одной в другую, на общие ресурсы в другой подсети заходим по IP
(то есть маршрутизация работает);
пароли Samba и linux разные вещи, пользователи могут менять их как вздумается, на сервере у линукс-пользователей
они остаются какие были;
Принтеры шарятся.
Из нерешенного:
Общие папки на Windows-компьютерах сети расшариваются, но доступ назначается либо индивидуально, по имени пользователя, либо всей
группе Domain USERS, при назначении прав группам buhgroup
и fingroup
пользователи, входящие в эти
группы, доступ в общие папки не имели. Причину этого не выяснил.
А в остальном прекрасный вариант для небольшой сети, в которой нужно централизованное управление и не нужен LDAP.
(к началу страницы)
Назад Пример 2. Одноранговая сеть. Персональные общие папки |
Содержание |
Дальше Пример 3. Домен Samba+dhcp на Alt Linux |