Версия для печати
Понедельник, 07 Май 2012 22:42

Установка и настройка SAMBA сервера + резервное копирование. Этап 1.

Автор
Оцените материал
(7 голосов)

Здравствуйте!

В этой статье я хочу рассмотреть установку и настройку файлового сервера SAMBA. Тех, кто не знает, что это такое, прошу в Википедию. Операционную систему я буду для этого использовать Fedora 12 — это один из самых популярных дистрибутивов Линукса.

Этап 1. Общая подготовка сервера. 

Для начала, опишем то, что имеем:

- Пусть у нас будут два независимых домена Active Directory в разных лесах, между которыми настроены доверительные отношения.
- Пусть они называются mydomain.domain и mydomain1.domain.
- Домены подняты на Windows server 2003 SP2 R2, либо на Windows server 2008 R2, но работающем в режиме Windows server 2003 (я тестировал только с этими ОС).

Нам требуется:
- Поднять файловое хранилище, которым смогут пользоваться члены обоих доменов.
- Распределить права доступа к этому хранилищу.
- Настроить фильтрацию по типам файлов.
- Настроить резервное копирование данных из файлового хранилища.

Начнём с установки. Разметку диска здесь мы рассматривать не будем. Можете выбрать разметку по умолчанию, предлагаемую самим установщиком. При установке, я назвал свой сервер samba.mydomain.domain, поскольку буду его вводить именно в домен mydomain.domain. Отметим, какие наборы пакетов нам понадобятся для работы:

В графических средах снимаем все галки. Иксы нам не нужны.
В приложениях тоже снимаем все галки.
Программирование — там ничего не отмечено по умолчанию. Так и оставляем
Серверы — тут отметим следующее:
- Поддержка печати
- Сервер каталогов
- Файловый сервер для Windows
Базовая система:
- Основные
- Поддержка оборудования
- Системные средства. Но зайдём внутрь и оставим галки лишь на тех компонентах, которые нам могут понадобиться:
    - mc
    - ntp
    - openvpn
    - samba-client
    - yum-utils
Языки не отмечаем никакие.

Этих пакетов нам должно хватить. Тем не менее, если на этом этапе мы что-то упустили, то это можно будет поправить позже. Устанавливаем.

После того, как система установилась, надо установить самые свежие обновления. Для этого нам нужно, чтобы наш сервер имел доступ в интернет. Сначала настроим сетевой интерфейс. Логинимся под root и набираем команду:

mc

Запустится консольный файловый менеджер. Находим файл /etc/sysconfig/network-scripts/ifcfg-eth0, ставим на него курсор и жмём F4 — откроется содержимое этого файла с возможностью редактирования. Приводим содержимое этого файла примерно вот к такому виду:

DEVICE=eth0
HWADDR=08:00:27:05:1E:FB #mac-адрес сетевого интерфейса
ONBOOT=yes
IPADDR=192.168.1.210 #ваш ip-адрес
NETMASK=255.255.255.0 #ваша маска сети
GATEWAY=192.168.1.100 #ваш шлюз
DNS1=192.168.1.200 #ваш DNS-сервер
DNS2=192.168.1.201 #ваш альтернативный DNS-сервер
SEARCH="mydomain.domain" #ваш локальный домен Active Directory
DOMAIN="mydomain.domain" #ваш локальный домен Active Directory

Сохраняем и перезагружаем систему командой reboot. После загрузки проверяем, что сеть работает:

ping 192.168.1.100

Если пинг пошёл, значит всё хорошо.

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

proxy=http://192.168.1.100:3128 #в таком виде надо прописывать адрес прокси и его порт
proxy_username=myuser # В случае, если необходима авторизация, то прописываем логин
proxy_password=mypass # и пароль

Всё, теперь пробуем обновиться. Важно! Сначала надо обновить сам менеджер пакетов yum! На практике встречалось, что обновление может не пойти, пока не обновишь сам yum. Итак, делаем:

yum -y update yum

И вот только после этого запускаем обновление всей системы:

yum -y update

После успешного обновления надо перезагрузить систему.

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

yum list *samba*

Вывод должен быть примерно такой:

Из этого видим, что нам не хватает одного пакета. Устанавливаем:

yum -y install samba-winbind

Далее, что нам необходимо сделать — это открыть нужные порты на фаерволе, который называется iptables. Находим файл /etc/sysconfig/iptables и приводим его вот к такому виду:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Изначально, на нашем сервере был открыт только 22-ой TCP-порт — это порт для ssh. Мы открыли порты udp 137, udp 138, tcp 139 и tcp 445 для нашей самбы, а также открыли порты udp 631 и tcp 631 для сервера печати, если таковой, в будущем, захотим пристроить к самбе. Для того, чтоб прописанные нами правила фаервола применились, надо его перезапустить:

service iptables restart

Также, на период установки, настройки и тестирования, нам лучше перевести в разрешающий режим систему принудительного контроля доступа SELinux. Находим файл /etc/selinux/config , находим в нём строчку SELINUX=enforcing и меняем её на SELINUX=permissive. После того, как всё будет настроено 100%-но работоспособно, SELinux можно будет включить обратно и гибко настроить его под свои нужды. Но это — материал уже для другой отдельной статьи...

Далее, чтобы потом избежать кое-какие проблемы с самбой, настроим синхронизацию времени с контроллерами домена. Найдём файл /etc/ntp.conf, а в нём найдём строки:

server 0.fedora.pool.ntp.org
server 1.fedora.pool.ntp.org
server 2.fedora.pool.ntp.org

и заменим их на строчки, в которых серверами NTP будут указаны контроллеры домена:

server 192.168.1.200
server 192.168.1.201

Сохраняем и включаем демон ntpd в автозагрузку:

chkconfig ntpd on

И сейчас надо перезагрузить систему.

Ну вот, теперь приведём наши конфигурационные файлы в должный вид и, тем самым, подготовим наш сервер для ввода в домен mydomain.domain. Сам я пользовался вот этой статьёй. Тем не менее, здесь мы это ещё раз всё рассмотрим пошагово. Для начала, отредактируем файл /etc/krb5.conf. Его нужно привести в аналогичный вид:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true
renew_lifetime = 7d
default_realm = MYDOMAIN.DOMAIN

# У меня в домене присутствует два контроллера домена (с адресами 192.168.1.200 и 192.168.1.201).
# Если у вас он всего один, то лишнее уберите.
[realms]
mydomain.domain = {
kdc = 192.168.1.200
kdc = 192.168.1.201
admin_server = 192.168.1.200
admin_server = 192.168.1.201
default_domain = mydomain.domain
}

[domain_realm]
.mydomain.domain = MYDOMAIN.DOMAIN
mydomain.domain = MYDOMAIN.DOMAIN

И не забывайте соблюдать регистр, когда будете подставлять свои значения для контроллеров домена и названия домена.
Далее, находим файл /etc/samba/smb.conf и приводим его в аналогичный вид:

[global]
log file = /var/log/samba/log.%m
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
null passwords = yes
interfaces = eth0
hosts allow = 192.168. 127.0.0.1
winbind uid = 50-99999999
winbind gid = 50-99999999
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
server string = Linux
netbios name = samba
password server = 192.168.1.200 192.168.1.201
realm = MYDOMAIN.DOMAIN
client signing = yes
local master = no
domain master = no
workgroup = MYDOMAIN
debug level = 2
security = ads
dos charset = 866
max log size = 50
os level = 0

Опять же, не забываем про регистр.

Последний файл, который нам надо подправить, это /etc/nsswitch.conf . Находим в нём следующие строчки:

passwd: files
shadow: files
group: files

И правим их до такого вида:

passwd: files winbind
shadow: files
group: files winbind

После того, как мы отредактировали все конфигурационные файлы, нам надо запустить/перезапустить и включить в автозапуск некоторые демоны (службы). Для начала, набираем команду ntsysv. Появится окно, в котором надо поставить звёздочку напротив демонов nmb, smb и winbind. Таким образом, мы включили эти демоны в автозапуск. А сейчас запустим/перезапустим их вот такими командами:

service smb restart
service nmb restart
service winbind restart

Хорошо. Теперь попытаемся включить наш SAMBA-сервер в домен Active Directory. Вводим следующую команду:

kinit Admin@MYDOMAIN.DOMAIN

Где Admin — это учётная запись пользователя AD, имеющего права администратора домена. Если всё нормально, то, к примеру, в моём случае, должно быть типичное линуксовое молчание после ввода пароля. Молчит, значит всё в порядке :) Если же у вас это не так, то вот возможные проблемы на этом этапе:

kinit: krb5_get_init_creds: Client (Admin@MYDOMAIN.DOMAIN) unknown — Надо проверить правильность ввода логина\пароль админа.

kinit: krb5_get_init_creds: unable to reach any KDC in realm (MYDOMAIN.DOMAIN) — Проверьте правильность настроек DNS и конфига krb5.conf

kinit: krb5_get_init_creds: Clock skew too great — Рассинхронизация времени на контроллере домена и клиентом

Итак, если же проблем нет, то выполняем вторую команду:

net ads join -U Admin

Если у вас выйдет сообщение:

Using short domain name — MYDOMAIN
Joined 'SAMBA' to realm 'mydomain.domain'

то значит всё в порядке. Перезагрузимся.
Теперь, давайте проверим, хорошо ли наш SAMBA-сервер чувствует себя в домене. Вводим команду:

wbinfo -t

Вывод должен быть таким:

checking the trust secret via RPC calls succeeded

Проверим пользователей и группы. Эти команды должны вывести список пользователей и групп АД:

wbinfo -u
wbinfo -g

Заметьте, что группы и пользователи должны отобразиться как из домена mydomain.domain, так и из домена mydomain1.domain ! Если это не так, то SAMBA, скорее всего, тут не причём, и надо проверять как у вас в доменах настроены доверительные отношения и ДНС-серверы.

Проверяем аутентификацию в домене:

wbinfo -a user%123
wbinfo -a "MYDOMAIN1\user"%123

где user и MYDOMAIN1\user - пользователь домена, 123 - пароль. Если в обоих случаях ответ:

plaintext password authentication succeeded
сhallenge/response password authentication succeeded

значит аутентификация в доменах работает.

Проверим, видит ли наша самба пользователей обоих доменов:

id user
id "MYDOMAIN1\user"

Команда должна вывести id пользователя домена и группы, к которым он относится.

Итак, все тесты пройдены, мы в домене, и самба настроена правильно. Переходим ко второму этапу.

Этап 2. Настройка прав доступа на файловое хранилище.

Перейти сразу на:
этап 3 

 

Прочитано 14862 раз Последнее изменение Воскресенье, 21 Октябрь 2012 12:29
Николай