Пример 3. Alt Linux и домен на Samba+dhcp для Windows XP-71. Особенности данного примера
2. Начальные условия
3. Установка Samba-3.4.8.
4. Настройка сервера dhcp
5. Заводим учетные записи пользователе и групп будущего домена
6. Второй администратор домена
7. Создание общих ресурсов
8. Конфигурирование сервера Samba
9. введение в домен клиентов Windows XP и Windows 7
10. ВыводыПродолжение этой ветки
http://forum.altlinux.org/index.php/topic,7625.0.htmlДиректор Иван Иваныч хороший директор, и через какое-то время дела фирмы пошли в гору, штат сотрудников стал расширяться, в фирме образовалось две структуры, бухгалтерских отдел и финансовый отдел. А сотрудников стало уже почти 50 человек, а через год их может стать около сотни. Посовещавшись, вы с директором решили внедрить домен, при такой сети это позволить гораздо успешнее и проще управлять сетью. Так же будет отныне решено использовать сервер dhcp, что в такой сети будет являться хорошим решением, а также позволить пользователям ноутбуков не беспокоиться, когда их настройки были перенастроены при подключении к сетям ваших деловых партнеров.
1. Особенности данного примераОсобенности данного примера состоят в следующем:
- в качестве серверной ОС используется
Alt Linux 5 KDE (desktop);
- установка на
Alt Linux 5 KDE (desktop) новой Samba-3.4.8., которая позволит ввести в домен
компьютеры под управлением Window 7 (идущая с Alt Linux 5 KDE (desktop) Samba-3.0.37. не позволит этого сделать);
- масштабируемость;
- внедрение сервера
dhcp, что является хорошим решением в большой сети, плюс удобство для мобильных пользователей;
- простота управления;
2. Начальные условия- имя домена
firma, имя сервера
altserver, NetBIOS имя
aserver, его ip будет статическим
192.168.1.7 и
192.168.2.7;
- будут две подсети, бухгалтерия
192.168.1. , экономисты
192.168.2.;
- использование
dhcp и
wins, dns пока не трогаем;
- всем клиентам будет назначен динамический ip-адрес, сетевой принтер будет получать ip-адрес согласно своему mac-адресу;
- каждому пользователю будет создан и доступен персональный общий ресурс, а также будут созданы два ресурса для каждого отдела (бухгалтеры и финансисты);
- пользователь
director будет владельцем всех ресурсов.
3. Установка Samba-3.4.8.Предварительно делаем обновление системы, для этого подключаем нужный репозиторий и выполняем команду:
apt-get && apt-get dist-upgrade
Без обновления пакет Samba-3.4.8. имеет шансы при установке выдавать ошибки и не установиться.
Я не смог собрать из исходников новую Samba, поэтому я воспользовался любезно предоставленной сборкой Василия Терешко с сайта
http://end.kiev.ua/linux/alt/tolmi-5.1/i586/RPMS.tolmi-5.1/. Я скачал отсюда следующие пакеты и установил:
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
Если все прошло хорошо, проверьте, что пакет samba-3.4.8-alt1.i586.rpm нормально установился:
rpm -qa samba
samba-3.4.8-alt1
Пока отложим дальнейшее конфигурирование сервера Samba, и займемся сервером dhcp.
4. Настройка сервера 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
перезапустите сеть:
service network restart
Установите сервер dhcp:
apt-get install dhcp-server
Настройка сервера dhcp в альтлинукс осуществляется в файле
/etc/dhcp/dhcpd.conf. После установки пакета dhcp-server вы найдете в этой директории файл
dhcpd.conf.sample. Давайте исправим этот файл под наши задачи.
Для наших задач сервер должен:
- выдавать адреса для двух подсетей, причем диапазон будет находиться в пределах
.31-.230, практика показывает, что полезно бывает оставить место под статические адреса (сканеры, принтеры, управляемые свичи и т.п.);
- также предположим, что у нас есть сетевой принтер со своей сетевой картой, и мы укажем серверу dhcp всегда назначать ему один и тот же адрес, делается это по привязке к mac-адресу сетевой карты. Mac-адрес вы можете узнать в документации к принтеру, либо зайдя через веб-интерфейс в настройки принтера, как правило, сетевые принтеры имеют такую функцию, в этом примере такой принтер будет называться
hp1320n и ему будет назначаться адрес
192.168.1.52.
- точно также предположим, что в подсети финансистов компьютеру Иван Иваныча будет назначаться адрес динамически, но всегда один и тот же -
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;
}
}
5. Заводим учетные записи пользователей и групп будущего доменаСначала добавим пользователя
root в базу данных Samba, этот пользователь администратор сервера и будет администратором домена. Перед этим, с учетом того, что я использовал в этом примере пакет от Василия Терешко с сайта
http://end.kiev.ua/linux/alt/ создадим папку
# mkdir /var/lib/samba/private
именно там будет храниться база данных паролей, учтите, это нужно лишь для этого пакета, этот путь задается при сборке, и Василий Терешко задал этот путь там, как правило база данных хранится в папке
/etc/samba (однако не исключено, что этот путь будет во всех новых сборках).
Теперь уже непосредственно добавляем пользователя
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 не должна будет что-либо показать.
Теперь создадим наших пользователей. Вот наши сотрудники:
Имя сотрудника | Учетная запись | Пароль | Имя личной папки | Каталог на файл-сервере | Рабочая станция |
Иван Иваныч | 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.
Соответственно сотрудников бухгалтерии помещаем в группу
buhgroup, сотрудников финансового отдела в группу
fingroup.
Иван Иваныча добавляем командой
# 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:Елена Викторовна
6. Второй администратор доменаЧтобы еще какой-то сотрудник мог добавлять компьютеры в домен, он должен входить в группу
root. Создадим учетную запись такого пользователя (
odmin) обычным путем, а затем поместим его в группу
root.
# usermod -g 0 odmin
Характеристики этого пользователя:
# 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
Заметьте
Primary Group SID: S-1-5-21-....-512, по виндовым понятиям это SID группы
Domain Admins. Данный пользователь будет являться администратором домена, но не администратором вашего сервера.
7. Создание общих ресурсовСоздадим общие ресурсы для групп, для этого создадим скрипт
/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