Начиная знакомство с linux самое первое что мы пытаемся поставить это прокси-сервер squid и файл-сервер samba. Не смотря на обилие документации установка и настройка samba не редко вызывает множество проблем, как на старте, так и в процессе эксплуатации.

В этой статье я постараюсь описать процесс установки и настройки samba файл-сервера для функционирование в домене Windows.

1. Установка и настройка kerberos

Устанавливаем необходимы пакеты:

[root@srv-smb ~]# yum install krb5-workstation ntp

Для правильной работы kerberos необходима точная синхронизация времени с контроллером домена. Открываем файл /etc/ntp.conf, комментируем все теги server и добавляем наш контроллер домена:

server srv-dc.mydomain.local

Добавляем в автозапуск и запускаем сервис ntpd:

[root@smb-srv etc]# chkconfig ntpd on
[root@smb-srv etc]# service ntpd start
Starting ntpd:                                             [  OK  ]

Открываем файл /etc/hosts и проверяем соответствие IP-адресов и имен, не правильно заполненный /etc/hosts может стать причиной множества ошибок:

127.0.0.1            localhost
# IP сервера         NetBios-имя DNS-имя
192.168.10.25        srv-smb  srv-smb.mydomain.local

Приводим файл /etc/krb5.conf к следующему виду:

[libdefaults]
    default_realm = MYDOMAIN.LOCAL             # имя нашего домена
 
[realms]
    MYDOMAIN.LOCAL = {
        kdc = srv-dc.mydomain.local
        admin_server = srv-dc.mydomain.local
        default_domain = mydomain.local
    }
 
[domain_realm]
    .mydomain.local = MYDOMAIN.LOCAL
    mydomain.local = MYDOMAIN.LOCAL

Получаем тикет от контроллера домена:

[root@srv-smb etc]# kinit administrator
Password for administrator@MYDOMAIN.LOCAL:

Проверяем полученный тикет:

[root@srv-smb etc]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@MYDOMAIN.LOCAL
 
Valid starting     Expires            Service principal
02/05/11 11:50:58  02/05/11 21:51:00  krbtgt/MYDOMAIN.LOCAL@MYDOMAIN.LOCAL
          renew until 02/06/11 11:50:58
 
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

2. Установка и настройка samba

Устанавливаем необходимые пакеты:

[root@srv-smb etc]# yum install samba3x samba3x-common samba3x-winbind

Приводим файл /etc/samba/smb.conf к следующему виду:

[global]
dos charset = cp866                     # Кодировка для работы с DOS-клиентами
unix charset = utf-8                    # Кодировка для преобразования текстовых
                                        # имен файлов, пользователей и групп между
                                        # сервером и клиентом
display charset = utf-8                 # Должен быть таким же как unix charset
workgroup = MYDOMAIN                    # Имя рабочей группы
realm = MYDOMAIN.LOCAL                  # Имя домена
netbios name = SRV-SMB                  # Имя сервера для NetBios
server string = Test File Server        # Описание сервера
security = ADS                          # Указываем режим работы samba-сервера,
                                        # как члена домена.
auth methods = winbind                  # Аутентификация через winbind
allow trusted domains = No              # Запрещаем доступ к нашему серверу из
                                        # других доменов и рабочих групп
password server = srv-dc.mydomain.local # Список контроллеров домена
time server = No                        # Не использовать samba как сервер времени
domain master = No                      # Не использовать samba как мастер-браузер
                                        # для домена
dns proxy = Yes                         # Если имя не найдено в WINS, разрешаем его
                                        # поиск на DNS-сервере
ldap ssl = no
idmap uid = 10000-20000                 # Определяем диапазон uid для сопоставления
                                        # с SID пользователей домена
idmap gid = 10000-20000                 # Определяем диапазон gid для сопоставления
                                        # с группами домена
winbind enum users = Yes                # Разрешаем Winbind перечислять пользовате-
                                        # лей домена
winbind enum groups = Yes               # Разрешаем Winbind перечислять доменные
                                        # группы
winbind use default domain = Yes        # Не использовать доменное имя при аутенти-
                                        # фикации доменных пользователей.
winbind refresh tickets = Yes           # Разрешаем winbind обновлять тикеты
case sensitive = No                     # Отключаем чувствительность файлов к
                                        # регистру
 
# для каждой расшаренной папки необходимо составить свою секцию описания
[data]
 path = /mnt/data                               # Путь к папке на сервере, у поль-
                                                # зователя должны быть права на эту
                                                # папку, чтобы он мог получить дос-
                                                # туп к ней через samba
 valid users = "@MYDOMAIN\Пользователи домена"  # Список пользователей или групп
                                                # которые могут подключаться к
                                                # папке, по умолчанию это любой
                                                # пользователь
 
 read list = "@MYDOMAIN\Пользователи домена"    # Cписок пользователей или групп
                                                # с разрешением только на чтение
 write list = "@MYDOMAIN\Администраторы домена" # Список пользователей или групп
                                                # с разрешением на чтение и запись
 
 read only = No                                 # Разрешаем запись
 create mask = 0644
 guest ok = Yes                                 # Разрешаем подключение анонимных
                                                # пользователей

Для проверки правильности конфигурационного файла у самбы есть замечательная утилита testparm:

[root@srv-smb samba]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[data]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

Вводим сервер в домен:

[root@srv-smb samba]# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- MYDOMAIN
Joined 'SRV-SMB' to realm 'mydomain.local'

Включаем в автозапуск и запускаем сервисы smb и winbind:

[root@smb-srv ~]# chkconfig winbind on
[root@smb-srv ~]# service winbind start
Starting Winbind services:                                 [  OK  ]
[root@smb-srv ~]# chkconfig smb on
[root@smb-srv ~]# service smb start
Starting SMB services:                                     [  OK  ]

Редактируем файлик /etc/nsswitch.conf и добавляем после следующих строчек слово winbind. Этим действием мы указываем в каком порядке и где системе искать имена-пароли пользователей и групп.

passwd:     files winbind
shadow:     files winbind
group:      files winbind

Теперь сервер готов к работе.

3. Заключение

Я как-то пытался проанализировал экономический фактор установки бесплатной samba в качестве файл-сервера.

На сегодняшний день samba хоть и может использоваться в роли контроллера домена, но до полноценной Active Directory с групповыми политиками ей еще далеко, и использовать ее на 100 человек пользователей вряд ли кто будет. Отсюда получается, что один Windows-сервер у нас уже есть и необходимые CALs тоже.

Таким образом корпоративная лицензия Win2k8Std для файлового сервера обойдется приближенно в 700$. Будет ли дешевле установить, полноценно настроить и обслуживать samba с Shadow Copy, DFS и сетевой корзиной? По-моему нет.

22 Коммент. : “Настройка Samba для работы с Active Directory”

  1. Самба очень хорошо закрывает задачу «файл-сервер для микрорабочих групп». В фирмах до 10-20 компьютеров смысла разворачивать полноценную AD в большинстве случаев нет, да и финансово это затратно. Мало того что надо покупать windows server, так еще и на каждую рабочую станцию придется покупать полноценную версию windows. Обычно, из экономии в таких фирмах используются на пользовательских компьютерах предустановленные HOME OEM версии windows, где никакими доменами и не пахнет(я не рассматриваю случай с полностью пиратским ПО).

    Из-за особенностей организации сети и кеширования HOME версии крайне фигово работают в качестве файл-сервера. Тут то очень хорошо может закрыть эту задачу линуховый файлсервер. Особенно если на него пошло не совсем помоечное железо, а микросеть собрана прямыми руками на гигабите.

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

  3. andrey пишет:

    исправь, пожалуйста – «В этой статье я постАрАюсь подробно….»

  4. @miha
    Многое зависит от того на сколько малое предприятие собирается развиваться. Если попробовать рассчитать на сколько дороже будет стоить вариант с виндой на 20 компьютеров (Win7prof – Win7Home + Srv CAL) * 20 + Srv2k8Std = (5300-2600+900) * 20 + 21000 = 93000 получиласть не маленькая сумма, но теперь все это делим на средний срок жизни фирм из 10-20 человек – 3года и получаем 2583р в месяц – не большая плата за возможность достаточно легкого развития.

    Как-то сталкивался с организацией где более 40 компов со сборной солянкой 2k/XP, плюс 5 с ubuntu все в рабочей группе – припечальное зрелище… душераздирающее… Отсюда вывод – возможность развития ИТ структуры лучше закладывать изначально.

    В плане использования samba для маленьких контор пользующихся услугами стороннего ИТ специалиста и не имеющих перспектив развития – совершенно согласен.

  5. @andrey
    Спасибо за исправления, на моей орфографии сказывается честно заработанная твердая четверка по русскому языку. Если хочешь оставь аську, я тебе перед каждой публикацией буду скидывать ссылку на статью для проверки. ;)

  6. «Многое зависит от того на сколько малое предприятие собирается развиваться.»
    Я наблюдал довольно много мелких фирм на старте, их всех объединяло одно – категорическое отсутствие денег. Поэтому, если есть возможно платить не сейчас, а «когда-нибудь» – это прекрасно. Компы народ всё равно купит, предустановленная абстрактная HOME OEM вида у них будет/
    Ну а дальше ползучее развитие.
    Если черех год-два, выросли, так что и AD надо, и бабло есть, можно и потратится, а нет- то и смысла нет из своего кармана выкидывать 3000$ на сомнительную перспективу развития когда нибудь.

  7. дядя Миша пишет:

    @alsigned
    Я админю два промышленных предприятия: завод и транспортную фирму. На заводе не более 30 компов, самба полностью перекрывает все потребности уже более шести лет.Вся винда – хомяк, самба – на федоре шестилетней давности. Отдельно на центосе сервер для 1с, интернет – шлюз на клеарос и всё путем…
    Транспортная фирма – менее 20 компов, самба на центосе и длинковский интернет роутер. Тож все хомяки.

    В обоих случаях никакой потребности в AD и никакого намека на расширение. Наоборот, с 2008 года съеживаемся: кризис пока еще не ушел.

    Так что статья правильная, нужная. Единственно, что я бы добавил, это пример описания нескольких папок с разными правами доступа для групп пользователей.

  8. Alsigned пишет:

    @дядя Миша
    Года четыре назад я работал в одной чудесной аутсорсинговой компании и периодично натыкался на небольшие фирмы состоящие начиная от 2-х человек и кончая 30. Особенно радовали юристы кучковавшиеся по 2-3 человека в разных фирмах и частях города, самое печальное что во всех случаях с небольшими фирмами получался дремучий лес, у одних так и у других этак. Даже помнится записи по всем делал что бы не путать ;)
    Расскажи как у тебя сделано:
    1. Имена локальных пользователей
    2. Раздельный доступ к ресурсам
    3. Доступ в интернет
    4. Пакет офисных програм
    5. Почта

  9. Alsigned пишет:

    @miha
    Здесь думаю стоит с тобой согласиться, выкладывать из своего кармана дело трудное. Видимо я уже просто привык работать с населением около 200 человек и рассчитывать экономию средств по принципу затрачено в месяц.

    Я использую самбу только в филиалах по 10-15 человек, для которых немножко урезали финансирование ИТ из-за не высокой прибыли. Мои кеи увы не хотят работать с Linux или BSD, поэтому приходится придерживаться MS, что бы не завязывать все на себя.

  10. дядя Миша пишет:

    @Alsigned
    Рассказываю. Самый клинический случай – транспортная фирма. Хотя и областной монополист, но очень примитивные потребности и твердая уверенность руководства, что как-то ограничивать серфинг сотрудников по интернету – не есть правильно. И едитнственное применение интернета для работы -»банк-клиент» и передача отчетов в налоговую с пенсионной службой. Никакой почты и никакой переписки, поскольку клиенту не отвертеться от услуг монополиста.

    Единственный общий ресурс – папки самбы «Парус»для бухгалтерии и «Консультанта» для всех.
    Короче, две рабочих группы – «руководство» и «бухгалтерия» и всё. Все сотрудники предпенсионного и пенсионного возраста, и всех всё устраивает.

    Всё легально, в том числе MS-Office и Касперский – как без него? :)

    Думаю, таких фирм хватает…

  11. SirYorik пишет:

    сейчас штуки типа Zentyal разворачивают смолбизнес сервер с прорвой служб, включая домен, управляемых из GUI галками, очень запросто. Необходимость AD в мелких (до ~100 узлов) вообще сомнительна.

  12. Alsigned пишет:

    @SirYorik
    Zentyal заслуживает внимания, разработчики молодцы сделали все красиво и доступно, возможно как раз этого и не хватало для небольших офисов. Но я по простоте своей душевной не люблю работать с такими продуктами ;)

    Необходимость AD в мелких (до ~100 узлов) вообще сомнительна.

    Active Directory – это не необходимость для работы компьютеров, это в первую очередь удобство администрирования, это экономия времени персонала, это изначально заложенная возможность расширения.

    Предположим в организации имеется около 50 компьютеров и Samba в роли PDC, есть задача «Установить на все компьютеры RAdmin», на каждый компьютер уйдет около 15 минут, на все получиться по 12,5ч времени системного администратора и времени пользователя. Если предположить что сотрудники компании получают по 35кр – получится (35кр/168)*12,5*2 = 5кр. Теперь рассмотрим вариант с нормальной AD – стоит это все 21кр (win2k8std) + 45кр(50 CAL) = 66кр единовременных затрат, и наша задача займет ровно 3 минуты при запуске системы.

    Таким образом если в организации с 50-ю пользователями раз в месяц возникает задача что-то установить или внести какие-либо изменения сразу на всех компьютерах, то использование AD полностью окупит себя за год.

    До 50 человек – любой каприз, хоть голая Samba PDC, хоть Zentyal Office, хоть рабочая группа, так или иначе один сисадмин успеет вокруг всех обежать. Бывают ситуации когда сисадмин быстро бегает или спектр изменений в информационной структуре организации равен нулю, только в этих случаях количество хостов может достигнуть 100. ;)

  13. daemon17 пишет:

    Использую Samba + LDAP + Gosa(админка) на FreeBSD, в офисе 100 чел.
    Все разделено по правам. Все летает уже 2 года

  14. Alsigned пишет:

    Привет @daemon17

    На клиентских компьютерах Windows XP? Какой прикладной софт используется?

  15. Алексей пишет:

    Всем доброго времени суток.
    У меня есть к вам вопрос на обсуждение.
    Исходные данные:
    - Организация 120 человек;
    - Домен на Windows 2003 Ent Server, 120 клиентских лицезий
    - Файловый сервак с авторизацией в домене (samba), диск с поддержкой ACL;
    - Клиенты на хрюше;
    - Шары лежат в основном на samba, но есть некоторые проблемки с ACL (иногда сами слетают и выставляется параметр на файл «Read Only»);
    Итак, как мне кажется, есть 2 ситуации решения небольшой проблемки, указанной выше, а также проблемки лицензирования. Домен на винде не учитываем. Рассматриваем только организацию файлового хранилища.
    Ситуация 1 (стандартная):
    Покупаем Windows Server 2003 (2008). К нему стандартно прилагается 5 клиентских лицензий. Стоимость лицензии около $1000, что не является для организации небольшими деньгами :) .
    Покупаем 115 клиентских лицензий для пользователей (~60000 руб.), что уже существенно;
    Настраиваем шары на винде. Или на самбе, но с авторизацией в домене. Но могут возникнуть выше описанные проблемки.
    Клиенты работают и радуются :)
    Ситуация 2 (в основном и хочу обсудить ее):
    Покупаем Windows Server 2003 (2008). К нему стандартно прилагается 5 клиентских лицензий. Клиентские лицензии не покупаем либо 1 лицензию на устройство.
    Устанавливаем Linux (FreeBSD). Монтируем шары с виндового сервера.
    Настраиваем шары в самбе на примонтированную папку.
    Пользователи работают :)
    Вопрос вот в чем:
    Как во втором случае происходит подсчет клиентских коннектов к виндовому серваку (мне кажеться, что только один – от линуксового сервака)?
    И будет ли возможность НОРМАЛЬНОЙ работы с правами на ntfs виндового сервака?

    P.S.: возможно, что-то не так объяснил, так что задавайте вопросы – попробую растолковать.

  16. Alsigned пишет:

    Привет @Алексей

    Подсчет лицензий во втором случае будет вестись точно также как и в первом.

    http://www.microsoft.com/rus/licensing/products/server/server_cal.aspx

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

    Если ты хочешь, что бы все компы были в домене Windows, то тебе так или иначе придется купить CALs на всех пользователей или все устройства, хотя бы для того чтобы они могли легально авторизироваться на контроллере домена.

    Другой вариант – полностью отказаться от Windows Server и использовать Samba в качестве контроллера домена. Но переводить 120 пользователей с обычного домена на samba не так-то просто, и затраты как раз будут равносильны покупке CAL.

  17. Алексей пишет:

    @Alsigned
    Спасибо за разъяснения. Я так и думал, но надеялся на лазейку :( .

  18. Алексей пишет:

    Но все-же?
    Клиентская лицензия «на устройство» позволяет любому числу пользователей осуществлять доступ к серверному программному обеспечению с одного устройства
    Во втором, описанном мною, случае коннект ведь идет с одного устройства: с samba сервера? Ведь он уже производит проверку на доступ к своей шаре и он же отправляет запрос на проверку доменного имени через свой krb тикет? Если я не прав, то обьясните, пожалуйста. Заранее все спасибо.

  19. Алексей пишет:

    А про мультиплексоры я и раньше читал, но как-то это не очень есть гуд, так ка я могу дать комплексную шару (шара непосредственно samba сервера + примонтированная шара виндового сервера). Здесь у на буду конфликтовать 2 лицензии: Виндовая и GPL.

  20. Alsigned пишет:

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

    PS: Я обычно стараюсь предложить какое-нибудь изящное решение, но здесь если не планируется переход на СПО и из недостающих лицензий только один Windows Server и 120 шт CAL, то эффективнее купить лицухи.

  21. Приветствую, коллега!
    На самом деле, при auth methods = winbind, ставить пакет krb5-workstation не обязательно. Samba и без него через winbind корректно работает.

  22. Dozent пишет:

    Здраствуйте, решил восползоватся данной статьёй ибо она самая одекватная но вот проблема в том что при получении билета от кнтролера пишит что время слишком разное вроде всё нормально написано вроде всё совпадает, почему так понять не могу…

Трекбеки/Пинги

  1. Статьи за неделю не попавшие в ленту новостей (выпуск 147) - [...] «Настройка Samba для работы с Active Directory«; [...]

Оставить комментарий