Поднимаем корпоративный файловый сервер на Debian Linux

Ох, и обленились же в последнее время все системные администраторы. Софт, как и прежде, можно юзать пиратский, поэтому абсолютно никто не мешает им ставить серверные виндовозы для решения элементарных задач. Таких как, например, поднятие файлового сервера. С windows на это требуется каких то пол часа времени. Немного, да? А как насчет Linux? С ним нужно подольше поковыряться? Не согласен.
На самом деле для поднятия файлового хранилища на Linux требуется ничуть не больше времени. И сейчас, уважаемый читатель, я тебе это докажу. Я покажу, как настроить Debian Linux для работы с Active Directory, а так же поднять веб-интерфейс для администрирования.
Определимся с задачей
Пусть у нас имеется контроллер домена на Windows 2003 Server и системник под файловый сервер без ОС. Задача состоит в том, чтобы: установить ОС, ввести машину в домен, настроить аутентификацию доменных пользователей без запроса логина и пароля, поднять веб-интерфейс для управления, создать необходимые общедоступные ресурсы.
Итак, приступимс…
Условимся, что:
Имя нашего нового файлового сервера: vr-online
Домен: mydomain
Контроллер домена: dataserver
Полное доменное имя контроллера домена (FQDN): dataserver.mydomain.local
IP контроллера домена: 192.168.0.1
IP DNS-сервера: 192.168.0.1
Виртуальная машина – сила!
Для удобства будем ставить и настраивать на виртуальной машине Virtual Box. Если тоже захочешь попрактиковаться на виртуалке, то не забудь тип сетевого подключения поставить “Сетевой мост” с сетевой картой, которая смотрит в локальную сеть:

На данный момент последним является Debian Linux 5 под кодовым именем Lenny. Его и устанавливаем.

Установка Дебиана проста до безобразия. Выбирай “Graphical install”, затем укажи нужный язык. Во время установки понадобится ввести следующие параметры:
Имя компа : vr-online
Домен : mydomain.local
Разметка диска : Авто (отдельные разделы под home, usr, var, tmp). При желании можно разметить вручную. На твоё усмотрение.
Выбор программного обеспечения: ТОЛЬКО “стандартная система”, ничего более.

Настройку сети я пропустил, т.к. в любой нормальной корпоративной локалке есть DHCP-сервер.
Т.е. программа установки получит все параметры автоматом. На этом установка окончена.
Log in, please!
Добро пожаловать в мир Linux =)

Логинимся под рутом.
Первым делом убираем CD/DVD привод из sources.list. В реале это позволяет физически отключить привод от нашего сервака. Ведь больше он на нём не понадобится.
> nano /etc/apt/sources.list
Комментируем строчку, что начинается на “deb cdrom” и сохраняем.
Теперь:
> apt-get update
Поднимаем SSH. Ведь рулить серваком проще всего c помощью классной утилиты Putty.
> apt-get install ssh
Т.к. сервер стоит во внутренней сети, то можно не менять настройки безопасности SSH и сразу логиниться со своего компа от имени рута. Делать так на public сервере ни в коем случае нельзя. 
Теперь смотрим какой IP получил наш сервер:
> ifconfig
Можно заходить по SSH. Открываем Putty, пишем IP. В разделе Translation указываем UTF -8. Огромное достоинство Putty заключается в том, что данные из буфера обмена вставляются с командную строку по клику правой клавиши мыши по области окна. Т.е. скопировал ранее заготовленную команду со всеми нужными параметрами, кликнул по окну Putty, данные попали в командную строку.

Куда же нам теперь без файлового менеджера? Он обязательно пригодится. Ставим Midnight Commander. Кстати в mc при работе через putty можно пользоваться даже мышкой.
> apt-get install mc
Переходим к настройке сервера
На всякий случай добавим в hosts инфу о нашем контроллере домена:
> nano /etc/hosts
Пишем в файл:
192.168.0.1 dataserver.mydomain.local dataserver
Ставим ntpdate для синхронизации времени c DC(Domain Controller), это нужно для нормальной работы Kerberos.
> apt-get install ntpdate
Настроим его.
> nano /etc/default/ntpdate
Прописываем наш контроллер домена:
NTPSERVERS=”dataserver.mydomain.local”
Запускаем синхронизацию времени вручную:
> ntpdate –s dataserver.mydomain.local
Для проверки запускаем:
> date
Должны увидеть правильное время и дату.
Пришла пора уточнить сервер(ы) DNS, обслуживающий домен.
> nano /etc/resolv.conf
Там обязательно должна быть строка:
nameserver 192.168.0.1
Ведь наш DC так же несёт на себе DNS
Ставим все нужные для работы пакеты.
> apt-get install samba winbind libpam-smbpass krb5-user krb5-config
Небольшое описание того, что мы устанавливаем:
Samba - это набор программ, которые реализуют протокол SMB/CIFS в системах unix, позволяя обслуживать запросы к файлам и принтерам клиентов Windows, NT, OS/2 и DOS. Этот протокол иногда называют LanManager или NetBIOS.
Winbind - для получения информации о пользователях и группах с серверов Windows NT. Также служба может выполнять функции авторизации через PAM-модуль.
Libpam-smbpass – это модуль для PAM. Позволяет преобразовывать Unix пользователей в пользователей Samba. Т.к. у Samba своя собственная база пользователей, поэтому её обязательно нужно синхронизировать с базой Unix.
Krb5-user – позволяет производить аутентификацию пользователей в сети. Kerberos — сетевой протокол аутентификации, позволяющий безопасно передавать данные через незащищённые сети для безопасной идентификации. Обеспечивает взаимную аутентификацию — оба пользователя через сервер подтверждают личности друг друга. Сообщения, отправляемые через протокол Kerberos, защищены от прослушивания и атак повторного воспроизведения.
Krb5-conf – создаёт начальную конфигурацию пакета.
Во время установки появится окно конфигурирования samba. Спросит рабочую группу/домен. пишем всё, что угодно. Всё равно потом эти конфиги перезапишем. Следующий вопрос будет об использовании WINS. нажми “Нет”. Следом выйдет запрос настройки Kerberos. Пишем тоже всё, что угодно. На следующий вопрос отвечаем аналогично.
Всё. Установилось. Настроим сначала Kerberos.
Лёгким жестом руки удаляем всё из конфига:
> cat /dev/null > /etc/krb5.conf
Не подумай, что я – маньяк. Просто я не люблю, когда в конфигах находится сотни строк с комментариями. Всегда удаляю всё лишнее. Теперь правим его:
> nano /etc/krb5.conf
Вот мой начальный рабочий конфиг кербероса:
[libdefaults]
default_realm = MYDOMAIN.LOCAL
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DATASERVER.MYDOMAIN.LOCAL = {
kdc = dataserver.mydomain.local
admin_server = dataserver.mydomain.local
}
[domain_realm]
.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = falseВажно!!! Соблюдать регистр букв! Точно так же как и у меня!!!
Обрати внимание, что в разделе [realms] мы пишем DATASERVER.MYDOMAIN.LOCAL, а не MYDOMAIN.LOCAL !!!
Просто замени MYDOMAIN.LOCAL и DATASERVER.MYDOMAIN.LOCAL на своё и все будет работать. По факту это – и есть стандартный конфиг. Я лишь вырезал из него комментарии и realms доменов, которыми ты всё равно никогда не будешь пользоваться.
Так же безжалостно поступаем с конфигом самбы. Дропаем всё.
> cat /dev/null > /etc/samba/smb.conf > nano /etc/samba/smb.conf
Вот мой рабочий конфиг, с которого я всегда начинаю настройку:
[global] workgroup = MYDOMAIN server string = File server dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d security = ads realm = MYDOMAIN.LOCAL encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u pam password change = yes socket options = TCP_NODELAY idmap uid = 1000-20000 idmap gid = 1000-20000 template shell = /bin/bash winbind use default domain = yes winbind enum groups = yes winbind enum users = yes #======================= Share Definitions ======================= [homes] comment = Home Directories browseable = no read only = no create mask = 0700 directory mask = 0700 valid users = MYDOMAIN\%S [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700
Расписывать каждый параметр не буду. Лень
Описание можно найти без проблем в инете. Потестим конфиг самбы:
> testparm
Получили:
Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER
Отлично. Осталось совсем немного.
В файле /etc/nsswitch.conf указать, откуда брать информацию о пользователях:
passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns winbind
Модифицируем PAM. Наcтраиваем cиcтемную аутенфикацию и авторизацию контроллером домена.
> nano /etc/pam.d/common-account
Пишем:
account required pam_unix.so account sufficient pam_winbind.so
> nano /etc/pam.d/common-auth
Пишем:
auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass
> nano /etc/pam.d/common-password
Пишем:
password sufficient pam_winbind.so password required pam_unix.so nullok obscure min=4 max=8 md5
> nano etc/pam.d/common-session
Пишем:
session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Т.к. у нас объявлена в конфиге Samba одна шара (домашняя директория каждого юзера домена), то нужно создать папку MYDOMAIN в /home.
Перезапускаем winbind и samba
> /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start
Теперь джойнимся в домен:
> net ads join -U administrator
Здесь administrator – логин администратора домена. Писать просто логин.
Не administrator@mydomain, и не . А просто administrator!
Далее вбиваем пароль. Вуяля! И мы в домене.
Делаем reload winbind, чтобы он перечитал информацию о доменных юзерах и группах:
> /etc/init.d/winbind force-reload
Поcле чего проверяем что же получили. Отобразим доменных юзеров и группы:
> wbinfo –u > wbinfo –g
-u отобразит cпиcки доменных пользователей
-g отобразит cпиcки доменных групп
Поздравляю, мой дорогой читатель!
Теперь можно зайти на наш файловый сервер:
\\vr-online
Пока ты увидишь лишь одну шару – папку с именем своего пользователя. Эта личная папка создастся для каждого доменного пользователя, зашедшего по сети на файловый сервер. Доступ к папке имеет только сам пользователь, и никто более.
Дело почти сделано. Теперь нужно поставить удобную панель администрирования Samba. Ставим, конечно же, WebMin.
Webmin - это программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров. Используя любой браузер, администратор сервера может создавать новые учётные записи пользователей, почтовые ящики, изменять настройки служб и сервисов, например : веб-сервера Apache, DNS, файл-сервера Samba.
Официальный ресурс проекта http://www.webmin.com/
Возможности Webmin значительно шире, чем мы будем юзать. Так что если не сталкивался с ним, то обязательно посмотри остальной функционал. Тебе понравится. Уверен. 
Удобней всего ставить из репозитория. Правим /etc/apt/sources.list. Добавим в него строку:
deb http://download.webmin.com/download/repository sarge contrib
Далее нужно установить GPG ключ следующими командами:
> cd /root
> wget http://www.webmin.com/jcameron-key.asc
> apt-key add jcameron-key.asc
Теперь:
> apt-get update > apt-get install webmin
Все зависимости подтянуться автоматически.
Теперь со своего рабочего места можно уже заходить на сервер через браузер:
https://vr-online:10000/

Логинимся под root’ом. Для начала нужно сменить язык интерфейса:
Webmin – Change Language and theme - выбираем Russian UTF-8.
Надо залогиниться заново, чтобы увидеть русскоязычный интерфейс. Кое-что всё равно останется на англицком, но это не страшно.
Вот теперь можно заняться настройкой Samba.
Идём Службы – Файл-сервер Samba.
Выбирай “Настройка автоматической синхронизации пользователей Unix и Samba”.
Ставь галочки:
- Добавлять пользователя Samba при добавлении пользователя Unix
- Изменить пользователя Samba при изменении пользователя Unix
- Удалить пользователя Samba при удалении пользователя Unix
Кликай пимпу “Применить”.
Аналогично нужно настроить синхронизацию групп Samba с группами Unix. Кнопка “Configure automatic Unix and Samba group synchronisation”
Остаётся лишь перенести всех доменных пользователей и группы в Samba. Для этого кликай “Преобразование пользователей Unix в пользователи Samba”.
Ну вот и всё. Теперь можно создавать новые файловые ресурсы и админить существующие, используя удобный веб-интерфейс.
Напоследок.
Установку и настройку я производил попутно с написанием статьи, поэтому ошибок быть не может. Но если, всё-таки, ты нашёл недочет, то пиши в личку или на мыло. Поправлю.
Как видишь, нет абсолютно ничего сверхсложного. Первый раз я копался с настройкой 2 дня. Теперь мне хватает 30-ти минут на поднятие файлового сервера на Debian Linux. Качай свой скилл и сможешь делать всё это с закрытыми глазами.
Удачи!
Written by: Роман Костенко aka Lord_of_fear
E-mail:
Скачать примеры конфигов можно здесь:
| Вложение | Размер |
|---|---|
| config.zip | 1.21 КБ |
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 9789 просмотров



Комментарии
12 комментария(ев)Дата: ВС, 26/12/2010 - 21:57
Отлично, мне скоро понадобится поднимать сервер на дебиане... надеюсь что на дебиане...
Дата: ВС, 26/12/2010 - 22:19
Бесспорно полезная статья! Лично для меня, по крайней мере!
Дата: ВС, 26/12/2010 - 22:59
Lord как всегда молодец! Рассказал просто о сложном.
Дата: Пнд, 27/12/2010 - 11:47
Давно хочу освоить линух, пригодица!
Дата: Пнд, 27/12/2010 - 15:12
Очень полезная статья. Огромное спс редактору.....
.......
Дата: Пнд, 27/12/2010 - 15:43
Lord_of_fear
Респект !!!
Дата: Пнд, 27/12/2010 - 19:11
Рад, что статья пригодилась.

Кстати, в инете нет ни одного правильного и полного мануала по этой теме
Дата: СР, 29/12/2010 - 17:19
По этой теме действительно стоит протаптывать дорожку!
Дата: Втр, 28/12/2010 - 04:49
Спасибо! А полностью на линухе и контролер и файловый, и сервер печати, и почтовый можно и как проше. Такая стаья бы не помешала. У нас в фирме на машинки поставил убунту и сервак хочу на ней поднять, пока сервака нет. Клево было бы и все бесплатно, а мне премия.
Дата: Втр, 28/12/2010 - 08:09
2Rafa
Контроллер домена на linux я ещё сам не поднимал. Поэтому пока такой статьи не могу написать.