Замена smb в linux

Обновлено: 04.07.2024

Чтобы обеспечить наилучшую совместимость для обмена файлами между различными ОС, Samba является распространенным решением. В Linux вы можете настроить сервер Samba для предоставления доступа клиентам, использующим протоколы Server Message Block (SMB) или Common Internet File System (CIFS) для доступа к этим общим ресурсам. Вы также можете настроить Linux в качестве клиента для серверов, предлагающих общие ресурсы SMB или CIFS, что позволяет серверам получать прямой доступ к общим ресурсам Windows. В этой статье вы узнаете, как смонтировать удаленную файловую систему SMB. Эта процедура может быть применена для монтирования SMB-совместимых общих ресурсов, которые предлагаются с любой платформы, поэтому она работает на общих ресурсах Windows и Linux.

Обнаружение SMB-шар

Перед тем как смонтировать общий ресурс SMB, убедитесь, что на клиентском компьютере установлены пакеты RPM cifs-utils и samba-client. Также вам необходимо добавить службу samba-client в конфигурацию брандмауэра на клиенте с помощью firewall-cmd --add-service samba-client --permanent; firewall-cmd --reload. После установки вы можете использовать команду smbclient -L для обнаружения доступных общих ресурсов SMB.

Команда smbclient запрашивает пароль текущего пользователя. Это связано с тем, что smbclient - это очень общая утилита, которая позволяет составлять список общих ресурсов, а также входить в общие ресурсы Samba на удаленных серверах и извлекать файлы с удаленного сервера. Однако для составления списка шар учетные данные не требуются. Итак, когда команда просит
пароль, вы можете просто нажать Enter. В качестве альтернативы вы можете использовать опцию -Uusername с smbclient для аутентификации с использованием действительной учетной записи пользователя Samba.

Вывод команды smbclient -L

В спойлере вы можете увидеть, как утилита smbclient используется для обнаружения доступных общих ресурсов по IP-адресу 192.168.122.201. (Чтобы обойти возможные проблемы с разрешением имен, вместо имени используется IP-адрес хоста.) Затем команда запрашивает пароль текущего пользователя. Поскольку опция -L запрашивает только список доступных общих ресурсов и ничего больше, вы можете просто нажать Enter, чтобы проигнорировать этот вопрос. Далее отображается текущий домен или рабочая группа сервера Samba, а также доступные общие ресурсы.

В качестве альтернативы вы можете использовать команду net share -l. Эта команда перечисляет только общие ресурсы, доступные на сервере Samba, и не отображает дополнительную конфигурацию, которая отображается при использовании smbclient -L. Обратите внимание, что команда net share -l также выводит список общих принтеров, тогда как smblcient -L просто отображает общие каталоги. Команда net доступна в Linux для предоставления интерфейса командной строки, который более знаком администраторам Windows, которые хотят настроить общий доступ к файлам с сервера Linux.

Вывод результата команды net share -l

Монтирование SMB

Чтобы смонтировать общий ресурс SMB, вы можете использовать команду mount. Вы можете использовать опцию -t cifs, чтобы указать, что монтируется на общий ресурс SMB, но без этой опции он также будет работать, потому что команда mount достаточно умна, чтобы самостоятельно определить, что это общий ресурс SMB, к которому вы хотите подключиться. Если на общем ресурсе разрешен гостевой доступ, вы можете указать опцию -o guest для аутентификации в качестве гостевого пользователя без пароля. Или же используйте параметр -o user = guest для той же цели.
Полная команда монтирования выглядит следующим образом:

mount -t cifs -o user=guest //192.168.122.200/data /mnt

Эта команда монтирует общий ресурс /data, который доступен на 192.168.122.200 в локальном каталоге /mnt. Обратите внимание, что вы сможете получить доступ к файлам в общем ресурсе, но не сможете записывать какие-либо файлы в общем ресурсе, потому что вы аутентифицированы как гостевой пользователь с ограниченными правами доступа к общему ресурсу.

Аутентификация на SMB-шаре

Выше вы прочитали, как подключить общий ресурс с учетными данными гостя. Если вы хотите что-то сделать с общим ресурсом, вы должны аутентифицироваться как действительный пользователь Samba. Это конкретная учетная запись пользователя, которая имеет учетные данные, необходимые для подключения к общему ресурсу Samba. (Обычный пользователь Linux не может этого сделать.) Для этого должен быть создан пользователь Samba.

Чтобы указать имя пользователя Samba, которое вы хотите использовать, вы можете добавить опцию -o username=someone:

mount -o username=sambauser1 //server/share /somewhere

Когда вы делаете это, команда mount запрашивает пароль. Ниже пример, как находить и монтировать общие ресурсы Samba.

1. Зайдите на сервер под рутом.
2. Введите yum install -y cifs-utils samba-client, чтобы установить необходимые пакеты RPM.
3. Введите smbclient -L 192.168.122.200, чтобы получить список доступных общих ресурсов на сервере.
4. Введите mount -t cifs -o guest //192.168.122.200/data /mnt, чтобы смонтировать общий ресурс /data в качестве гостя в каталоге /mnt.
5. Введите mount, чтобы убедиться, что монтирование прошло успешно.

Монтирование SMB-ресурсов через fstab

При монтировании файловых систем SMB через /etc/fstab вам необходимо учесть конкретную проблему: вам необходимо указать учетные данные пользователя, необходимые для выполнения монтирования. На общем ресурсе NFS это не обязательно, поскольку пользователь, который по умолчанию обращается к общей файловой системе, делает это, используя свои собственные учетные данные. При монтировании общего ресурса Samba через /etc/fstab эти учетные данные пользователя обычно указываются с параметрами username= и password=, но не рекомендуется помещать их в виде открытого текста в файл /etc/fstab.
Не забудьте включить параметр монтирования _netdev в /etc/fstab, а также для всего, что связано с сетью, для монтирования, которое будет завершено. Это гарантирует, что монтирование будет сделано намного быстрее. Также обязательно включите параметр x-systemd.automount, который гарантирует оптимальную интеграцию с systemd и значительно ускоряет монтирование.

В качестве альтернативы указанию учетных данных в файле /etc/fstab напрямую, вы можете использовать файл учетных данных. При использовании файла учетных данных сам файл учетных данных содержит имя пользователя, пароль и (необязательно) домен, к которому вы хотите подключиться. При использовании файла учетных данных его необходимо обязательно защитить. Лучший путь
чтобы защитить его, поместите его в домашний каталог пользователя root, установите для владельцев значение root:root и установите права 600.

Содержимое файла creds может выглядеть так
Расположение файла учетных данных описано в man mount.cifs.

Чтобы использовать файл учетных данных при монтировании из командной строки, вы можете включить параметр -o credentials=filename, как показано ниже:

Чтобы сделать то же самое из файла /etc/fstab, в файл /etc/fstab необходимо включить следующую строку:

1) Простая (доступная олигофренам) графическая настройка пользователей и прав доступа, а также режимов:
* share (guest/anonymous access);
* user(password protected).

3) Простой доступ для новых устройств в сети (Linux/Win/Android/iOS/etc) без установки сложных программ и совершения сложных телодвижений.

4) Шифрование из коробки по умолчанию.

5) Возможность прозрачного доступа к сетевым ресурсам (т.е. без использования root only mount/sudo mount) - из всех програм, которые умеют только open()/fopen() и ничего не знают про сетевые протоколы.

SAMBA не катит - это чуждое, портированое, reverse engineered решение, которое криво интегрируется даже в сам Linux.

Перемещено stave из linux-org-ru

Перемещено stave из admin

Перемещено Shaman007 из linux-org-ru


1) нет
2) нет
3) нет
3) нет
5) нет

Вам лишь бы ляпнуть, да?

SAMBA не катит - это чуждое, портированое, reverse engineered решение, которое криво интегрируется даже в сам Linux.

А, ну раз ты сказал, то ок.


1) Простая (доступная олигофренам) графическая настройка пользователей и прав доступа, а также режимов:

* share (guest/anonymous access); * user(password protected).

В Gentoo kde-base/kdenetwork-filesharing, ACL-и настраиваются в любом дистре из того же KDE из GUI. С вводом в Active Directory(хотя зачем олигофренам AD?) посложнее, но есть Yast в Suse и GUI-утилиты в Calculate, где это делается в 3 щелчка.

Эстеты могут заюзать net-misc/smb4k, для любителей прозрачного монтирования(но тут нужны консольные скилы на уровне раскомментировать 1 строчку в конфиге) есть autofs с поддержкой автомонтирования NFS/SMB.

Простой доступ для новых устройств в сети (Linux/Win/Android/iOS/etc) без установки сложных программ и совершения сложных телодвижений.

Ничего не понял, конкретизируй.

Возможность прозрачного доступа к сетевым ресурсам (т.е. без использования root only mount/sudo mount) - из всех програм, которые умеют только open()/fopen() и ничего не знают про сетевые протоколы.

SAMBA не катит - это чуждое, портированое, reverse engineered решение, которое криво интегрируется даже в сам Linux.
reverse engineered

Чуваки из Microsoft, принимавшии участие в портировании ржали всем офисом - пруфы в гугле. О полноте и качестве портирования - вопрос другой.

Pinkbyte ★★★★★ ( 20.08.14 18:21:10 )
Последнее исправление: Pinkbyte 20.08.14 18:21:39 (всего исправлений: 1)


Итак, спорным остаётся только вопрос №3, потому что нихрена не понятно, что ты хочешь. А пока, во избежании срача я тему прикрою от посторонних.

В Gentoo kde-base/kdenetwork-filesharing, ACL-и настраиваются в любом дистре из того же KDE из GUI.

А если не KDE? А если XFCE, Gnome, Cinnamon, XLDE?

Подключается человек к некой сети через DHCP и начинает сразу работать. Максимум поставить что-то типа ES Explorer и сказать IP машины с шарами.

Долго смеялся. Особенно над тем как оно легко и просто настраивается.

Чуваки из Microsoft, принимавшии участие в портировании ржали всем офисом - пруфы в гугле.

EU несколько лет назад прижал Microsoft и они после этого открыли большое количество спеков на CIFS, чем воспользовались разработчики из Samba.

Я попросил пример без кривой Samba, но вы почему-то либо читать не умеете, либо тупо игнорируете. Я хочу _родное_ решение, а не костыль из Windows.


Подключается человек к некой сети через DHCP и начинает сразу работать. Максимум поставить что-то типа ES Explorer и сказать IP машины с шарами.

И в чём проблема?

А если не KDE? А если XFCE, Gnome, Cinnamon, XLDE?

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

Уровень хотелки настолько же упоротый как у тебя.

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

И да, autofs ПОДДЕРЖИВАЕТ NFS. За тем как запилить обозреватель - отправляю в гугл.

Не нравится NFS? Запили обработчик для твоей любимой сетевой ФС. Это Opensource, детка. Тебе, вот прямо лично тебе, НИКТО НИЧЕГО НЕ ДОЛЖЕН.

Мы все вкладываемся туда ДОБРОВОЛЬНО. Не нравится - вариантов 2. Анальный зонд или банальное рабство. Свобода выбора - это свобода в том числе выбор просрать.

Pinkbyte ★★★★★ ( 20.08.14 18:46:43 )
Последнее исправление: Pinkbyte 20.08.14 18:48:21 (всего исправлений: 1)

потому что нихрена не понятно, что ты хочешь


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

Взываю к тебе из могилы(куда ты меня загоняешь своей глухотой) - AUTOFS

Монтирует другие шары(SMB,NFS,твоялюбимаяфсеслинапишешьскрипт) в /misc. С любым компов в сети.

Вы только что доказали, что аналога CIFS в Линукс нет.

Вот не далее как вчера я не смог заставить дружить две самбы (без обновления - лень было):

Угрохал пару часов, чтобы решить эту проблему и не решил. Пришлось посылать файл через FTP (файл

20GB - образ диска для Linux: не варез и не видео).

Как по-вашему обычный пользователь бы поступил в этой ситуации? Правильно, снёс к ***м Линукс.

Я считаю, что обычным пользователям и организациям Windows удобней и понятней (про остальные недостатки Linux'а промолчу, дабы избежать ненависти и потока оправданий), а главное там почти всё и почти всегда сразу работает из коробки (ставлю почти, ибо с багами Windows встречаюсь регулярно).

Насколько он прост в настройке для чайника?

Autofs - это не панацея.

Я привёл 5 пунктов. Пять.

Вы покрыли один и кричите, что я дурак.


Вы покрыли один и кричите, что я дурак.

Я покрыл 4 пункта из 5(и то, только потому что не понял что ты хочешь в одном из них, как выяснилось - он тоже покрывается).

То, что лично тебя не устраивает нативная реализация протокола SMB, ты не хочешь использовать NFS и все другие предложенные выше варианты - это твои половые трудности.

Только категоричные высказывания, слабо соответствующие(или вообще не соответствующие) действительности, в стиле последней инстанции без приводимых аргументов - это либо 4.3, либо 4.2. И подлежат удалению, да.

Pinkbyte ★★★★★ ( 20.08.14 20:12:21 )
Последнее исправление: Pinkbyte 20.08.14 20:13:35 (всего исправлений: 2)


Долго смеялся. Особенно над тем как оно легко и просто настраивается.

Если раскомментировать 1 строчку в конфиге - это просто неимоверная тяжесть для мышевоза, ну извините тогда

То, что лично тебя не устраивает нативная реализация протокола SMB,

Она не настраивается в больше, чем половине графических сред.

не хочешь использовать NFS и все другие предложенные выше варианты - это твои половые трудности.

Речь шла о применимости для простого пользователя. NFS не катит - или объяснить почему?

Можно без оскорблений.

Ещё раз для тех, кто не хочет слушать. Мне нужно что-то, что настраивается также легко, как file sharing в Windows. Всё, что вы написали, не имеет никакого отношения к теме.

Я сказал, что нет родного и такого же мощного и простого в настройке аналога Windows File Sharing. Остальное - ваши домыслы.

Вообще, у вас с аргументацией плохо: есть проблема с определёнными жёсткими требованиями - вы выдвигаете решения, которые на 95% не соответствуют требованиям (единственно похожее на правду - KDE + Samba).

Я постараюсь больше ничего, что идёт в разрез вашей религии Open Source и Linux, не писать. Я не знал, что на ЛОРе появились воинствующе настроенные модераторы, которые режут всё, что не соотвествует их идолу, ибо разумные аргументы вы отвергаете под видом 4.2 и 4.3 (без понятия, что это такое).


Выкинь религию из запроса.

ибо разумные аргументы вы отвергаете под видом 4.2 и 4.3

Pinkbyte ★★★★★ ( 21.08.14 11:46:21 )
Последнее исправление: Pinkbyte 21.08.14 11:47:17 (всего исправлений: 2)

Если бы samba работала как надо, если бы в ней не было тучи регрессий и проблем совместимости между . разными версиями самбы, если бы она правильно интегрировалась в Линукс, если бы она имела текстовую БД пользователей и машин, то тогда можно было бы её выдвигать на роль замены Windows Network File Sharing.

Я привёл вам ошибку, которую я, человек с нехилым опытом, не смог решить. Доступ share к одной самбе из другой не работает. Точка. Как вы представляете себе решение этой проблемы обычными пользователями?

Вы приводите решение, которое только по второму четвергу месяца работает как надо.

Весь Линукс такой (за исключением некоторых вылизанных вещей, которые не пытаются переписывать два раза в день), увы.

Сергей, вы фанатик Open Source, я вас понял.


Доступ share к одной самбе из другой не работает

Ты про что? DFS? Или про security=share, который выпилен и надо давно уже юзать map to guest = bad user?

Вы приводите решение, которое только по второму четвергу месяца работает как надо.

Я привожу решение, которое у меня работает с регулярными обновлениями более 7 лет. А что там не получается конкретно у тебя в твоём дистрибутиве - не могу знать.

Но т.к. ты экстраполируешь весь свой личный негативный опыт на состояние дел с Linux в целом, то почему я не могу сделать того же со своим позитивным опытом?

Да, у Samba есть сложные, но решаемые проблемы, особенно в третьей ветке. С SMB2, например. С DFS-репликациями.

С тем, о чём ты говоришь: простой доступ для пользователей - с этим у самбы проблем нет.

Сергей, вы фанатик Open Source, я вас понял. Всего хорошего.

А вы, уважаемый - неосилятор даже по меркам виндузятников. И вам всего хорошего.

Чтобы подключиться к Интернету, отправлять или получать файлы, важно, чтобы это было возможно с помощью ряда протоколов. В этой статье мы поговорим о трех из них. Мы собираемся объяснить, что такое SMB, CIFS и Samba протокол. Мы увидим, в чем их основные отличия и для чего каждый из них используется.

Что такое протокол SMB

SMB, CIFS и Samba

Прежде всего мы собираемся объяснить, что Протокол SMB. Это одна из старейших программ, которая со временем открыла доступ к файлам и каталогам, а также к сетевым ресурсам. Он отвечает за обмен информацией между процессами системы. Он был создан IBM.

Сегодня этот протокол позволяет подключаться к более старым устройствам с предыдущими версиями Microsoft операционная система. Для обмена файлами два устройства должны сначала установить соединение. Отсюда протокол SMB позволяет клиенту подключаться к серверу.

Самая последняя версия, используемая в таких операционных системах, как Windows 10 или Windows Server 2016, - это SMB 3.1.1. Важно правильно обновить этот протокол, поскольку иногда мы видим уязвимости, которые можно использовать. Примером был известный EternalBlue эксплойт который использовался для распространения программы-вымогателя WannaCry, которая несколько лет назад причинила огромный ущерб.

В соответствии с тем, что мы упомянули, Microsoft решила удалить поддержку первой версии SMB 1.0. Это может позволить, например, проводить DDoS-атаки на компьютер.

Архивы сравнения SMB CIFS

Что такое протокол CIFS?

После объяснения того, что такое протокол SMB, давайте поговорим о CIFS . В принципе можно сказать, что это смена названия. IBM создала SMB, но Microsoft быстро начала его использовать. 15 лет спустя, в 1998 году, Microsoft переименовала первую версию Server Message Block в CIFS.

Но, конечно, это было не только изменение имени. Логично добавлены разные функции. Например, они добавили поддержку символических ссылок или жестких ссылок, большего размера файла.

CIFS расшифровывается как Common Internet File System. Это аббревиатура от Общая Интернет Файловая Система . Он является частью протокола SMB и позволяет удаленно подключать несколько платформ, таких как Windows, Linux или macOS.

Одно из преимуществ CIFS заключается в том, что он работает универсально . Другими словами, например, Windows обычно использует файловую систему NTFS. Со своей стороны, macOS может использовать HFS. Что он делает, так это позволяет читать и распознавать эти файлы. Это позволит совместно использовать файлы и принтеры между компьютерами Windows и UNIX.

Таким образом, можно сказать, что CIFS - это конкретная реализация SMB от Microsoft. Однако сегодня, когда человек говорит об одном или другом, мы можем сказать, что они говорят об одном и том же. Хотя есть отличия в реализации.

Сегодня CIFS используется очень редко. Современные системы будут использовать SMB 2 или SMB 3. В основном последний, поскольку он находится в самых последних версиях, начиная с Windows 8. Можно сказать, что это обновления CIFS, которые соответствуют первой версии SMB.

Как работает Samba

Итак, на этом этапе мы спросим себя что такое самба . Мы видели, из чего состоят SMB и CIFS, но еще предстоит увидеть еще один термин. Samba также является реализацией протокола SMB, но в данном случае она бесплатна.

Эта реализация была для UNIX-подобных систем. Мы можем использовать его в Linux, macOS или Unix, и таким образом они действуют как клиенты в сетях Windows. В данном случае его первоначальный выпуск был в 1992 году, хотя с течением времени у него были разные версии.

Можно сказать, что, как и в случае с CIFS, Samba реализует протокол SMB . Это то, что позволит клиентам Windows получать доступ к каталогам, принтерам и файлам Linux на сервере Samba.

Таким образом, Samba - это реализация SMB с открытым исходным кодом. Это еще один способ связать сети Microsoft с Linux или macOS. Мы сможем получить доступ к файлам или обмениваться принтерами.


Вывод о различиях между SMB, CIFS и Samba

Так в чем же разница между SMB, CIFS и Samba? Мы можем сказать что SMB был первоначальным протоколом, появившимся в 1980-х годах. Он был создан IBM для обмена файлами и доступа к принтерам. Со временем были разные версии. В основном он использовался в Windows и DOS.

SMB - это расширение CIFS. Он распространился с начала 90-х годов с использованием Windows 95. С этого момента CIFS перестал быть настолько широко распространенным.

В свою очередь, CIFS так позже стала известна первоначальная версия SMB, когда Microsoft начала использовать ее в своих системах. У него были определенные реализации, позволяющие подключать несколько платформ, таких как Windows или Linux. Однако в настоящее время CIFS практически не используется. С другой стороны, мы можем найти последние версии SMB, такие как SMB 2 или SMB 3.

Наконец, самба это реализация вышеизложенного с открытым исходным кодом. Бесплатная реализация, позволяющая использовать его в различных системах, таких как Linux, macOS или Unix. При этом он был выпущен в начале 1990-х годов.

В конечном счете, это основные моменты, о которых следует помнить, когда мы сталкиваемся с терминами SMB, CIFS и Samba. Как мы видим, это протоколы и реализации, которые позволяют обмениваться файлами или получать доступ к принтерам. Они появились в разное время, хотя все трое древние. Первая версия SMB появилась в 1983 году и была создана IBM, а Samba - в 1990-х. Это означает, что, как мы видели, мы должны принимать меры безопасности и не включать устаревшие протоколы, которые могут использоваться хакерами, эксплуатировать уязвимости и красть информацию или брать под контроль ваш компьютер.


Вот и закончилась эра Windows Server 2003, служившей верой и правдой более десятилетия. Отказ от поддержки означает отсутствие обновлений и исправлений для более 11 миллионов систем, что в будущем может означать большую проблему в безопасности. Уже сегодня нужно подумать о переходе на современную ОС. MS уже предложила мастер и инструкции, но итоговая цена все-таки кусается, а поэтому стоит посмотреть в сторону open source. Будем заменять КД Linux-сервером.

Что будем делать?

Основным протоколом общения Win-систем в локальной сети служит SMB, изначально разработанный в IBM для обеспечения доступа к файлам и принтерам. В MS была добавлена поддержка NTLM-авторизации, а новый диалект получил название CIFS (Сommon Internet File System). В настоящее время с Win 8 доступна уже версия 3 протокола. Для централизованного администрирования компьютеров Win используется домен на основе Active Directory, задача которого — аутентификация пользователей и установка политик безопасности. В работе AD опирается на протоколы LDAP, Kerberos и DNS. С появлением гетерогенных сетей возникла необходимость сетевой интеграции *nix с Win-системами и AD. С одной стороны стояли юниксовские FTP и NFS, с другой SMB и AD. C первыми Win-клиенты работали без проблем, но в локальной сети они были не всегда удобны.

Решение второй проблемы взял на себя проект Samba, разрабатывающий с 1992 года свою реализацию сервера и клиента SMB/CIFS под *nix. Учитывая, что спецификации SMB/CIFS долгое время были недоступны, разработки шли медленно, хотя в общем в Samba 3 *nix-системы уже могли использоваться в качестве файлового сервера для Win-клиентов с авторизацией в AD. В 2004 году стали доступны спецификации SMB/CIFS и протоколы обмена AD, это дало старт новой ветке Samba 4, в развитии которой уже принимала участие и MS. Окончательный релиз Samba 4 был представлен в конце декабря 2012 года и сегодня уже рекомендуется к промышленному использованию. Поддержка Samba 3 на данный момент завершается.

В отличие от версии 3, Samba 4 имеет встроенные LDAP-сервер и сервер Kerberos KDC (Key Distribution Center). Служба DNS, являющаяся частью Active Directory, реализована в виде встроенного DNS-сервера, поддерживающего минимально необходимый набор функций. Как вариант, может генерироваться файл конфигурации для BIND. Специально разработана новая версия файлового сервера NTVFS, оптимизированного к требованиям AD. Правда, пока она находится в стадии разработки, и по умолчанию предлагается smbd. Поддерживается интеграция с сервером ntpd и синхронизация времени с рабочими станциями, реализована ACL в базе пользователей и многое другое. В итоге сервер с Samba 4 может выступать в качестве полноценного Active Directory Domain Controller, а не домена NT, как в версии Samba 3. Поддерживаются клиенты вплоть до новейших Win 8.1, групповые политики, перемещаемые профили, интеграция с Microsoft Exchange и многое другое.

В настоящее время поддерживается схема леса (forests schema) с максимальной версией 47, то есть Win 2008 R2 (30 — Win 2003, 31 — Win 2003 R2 и 44 — Win 2008). Так что все сказанное будет актуально и для всех ОС вплоть до Win 2008 R2 включительно. К более поздним можно даже не пробовать подключаться, получишь ошибку. Проверить версию можно при помощи dsquery:

Или при помощи PowerShell:

В качестве альтернативы можно использовать ADSIedit или посмотреть значение в реестре.

С теорией покончено. Теперь нам осталось всего ничего. Чтобы произвести миграцию с Win 2003/2008 на *nix/Samba, нужно установить Samba 4, подключить его к домену в качестве КД, передать роли, выключить Win 2003/2008. В Сети много руководств, но часть из них путаны и нередко рекомендуют лишние действия, в части приведена уже несколько устаревшая информация, которая была актуальна для ранних релизов Samba 4. В качестве отправной точки рекомендую официальную документацию проекта.

Установка Samba

В Сети обычно несколько контроллеров домена, определить владельцев ролей FSMO можно при помощи dsquery server. Данные понадобятся при дальнейших настройках. Например, хозяин схемы (Schema Master) определяется командой

В более новых версиях ОС можно использовать командлеты модуля Active Directory — Get-ADForest, Get-ADDomain.

Определяем Schema Master

Определяем Schema Master

Готовим сервер с Linux. Ставить будем на примере Ubuntu 14.04 LTS. В других дистрибутивах будут отличия в расположении конфигурационных файлов и особенностях пакетной системы. Как вариант, можно развернуть Samba-сервер при помощи сторонних проектов (см. врезку).

Готовые решения

Также в Сети можно найти несколько готовых проектов для быстрого развертывания сервера Samba или замены AD. Например, SerNet Samba4 Appliance предлагает репозиторий для основных дистрибутивов Linux, содержащий пакеты последнего релиза Samba и готовый дистрибутив на базе Debian со cконфигурированным доменом на Samba 4, включая расширения от Zarafa AD и инструменты групповой работы Zarafa. В TurnKey также есть готовый дистрибутив для организации PDC на базе Samba, содержащий готовые преднастройки и графические инструменты конфигурирования, который может быть развернут как на железе, так и в VM.

Многоцелевой серверный дистрибутив Zentyal предлагает интерфейс и модули, позволяющие быстро установить и настроить контроллер домена на основе Samba 4. Поставляется в виде готового ISO-образа и пакетов для Ubuntu. Серверный дистрибутив Clear OS, выросший из маршрутизатора, теперь обеспечивает простую возможность развертывания сервера, который может заменить контроллер домена для Windows ПК. Построен на базе RHEL.

Кроме этого, не стоит забывать проекты, расширяющие стандартные возможности LDAP и вполне способные заменить Active Directory: FreeIPA, GOsa2, 389 Directory Server и FusionDirectory.

Далее можно перезагрузить сеть sudo service network restart , чтобы оно выполнило resolvconf -a eth0.inet с нужными параметрами. Но это срабатывает не во всех дистрибутивах, поэтому проще перезагрузить систему. После проверяем файл, убеждаемся, что все нормально:

Также желательно прописать правильное имя узла Samba в /etc/hosts :

Проверяем корректность разрешения имени КД:

Пакеты Samba 4 есть в репозиториях всех современных дистрибутивов Linux, поэтому установка проблем не вызывает. Хотя там может быть не самая актуальная версия, а значит, будут недоступны все последние возможности и, главное, исправления. Сами разработчики Samba рекомендуют SerNet, подключаем в /etc/apt/source.list репозиторий:

Обновляем список пакетов и проверяем версию:

Или, если используется пакет из основного репозитория, просто

Перед дальнейшими действиями рекомендуется проверить корректность работы DNS и Kerberos для подключения к домену. Для этого нам понадобятся клиентские утилиты Kerberos.

В процессе установки будет запрошена информация по домену, по окончании просто проверяем правильность установок в /etc/krb5.conf :

Выполняем kinit, используя учетную запись администратора домена:

Утилита klist должна выдать информацию о полученном билете:

Если ошибок не получили, значит, эта часть работает. В принципе, этот шаг можно пропустить и вернуться, если возникнут проблемы при подключении. Хотя в случае с Samba 4 подключение к домену при правильно настроенной сети выглядит проще простого.

Проверяем корректность работы DNS и Kerberos

Проверяем корректность работы DNS и Kerberos

Подключаемся к домену

В поставке Samba 4 идет несколько утилит, некоторые непосредственно используются для администрирования, часть запускаются демонами и стартовыми скриптами. Основная утилита управления настройками Samba 4 — samba-tool, параметров у нее очень много, только субкоманд первого уровня 19. С ее помощью можем просмотреть и изменить установки, создать новый или подключиться к существующему домену, создать учетные записи, изменить политики, выполнить репликацию и многое другое. Например, чтобы создать новый домен в Samba 4, вводим (аналог dcpromo):

Кстати, поддерживается и RODC (достаточно в вызове заменить DC на RODC), поэтому спокойно можно развернуть такой КД на Linux в удаленном филиале.

По умолчанию используется внутренний DNS, это самый простой вариант, не требующий никаких дальнейших действий. Для сложных ситуаций, вероятно, потребуется BIND, в этом случае к команде следует добавить параметр -dns-backend=BIND9_DLZ . Полезно сразу привязать сервис к интерфейсам: --option="interfaces=lo eth0" --option="bind interfaces only=yes" . Остальные параметры можно найти, вызвав справку.

После этого будет произведен поиск КД для указанного домена и запрошен пароль администратора. Некоторое время будет затрачено на репликацию данных, в конце должны увидеть «Joined domain DOMAIN (SID ххххх) as a DC». Все, Samba 4 сервер присоединен к домену как КД. Сразу в этом можем убедиться, перейдя в консоли Active Directory Users and Computers в контейнер Domain Controllers, где появился новый контролер домена.

Подключаемся к Active Directory в качестве КД Новый КД в консоли Active Directory Users and Computers

По ходу генерируется новый krb5.conf и простейший конфигурационный файл smb.conf (шаблоны находятся в /usr/share/samba/setup ). Обрати внимание на каталоги, в которых хранятся настройки, рекомендую ознакомиться со структурой файлов:

Смотрим владельца схемы, он указывает на КД, работающий под Win:

Смотрим владельца схемы и уровень леса средствами samba-tool

Смотрим владельца схемы и уровень леса средствами samba-tool

Разработчики SerNet предлагают готовый конфигурационный файл, пока в нем нужно изменить только режим запуска, иначе стартовый скрипт не запустится:

Проверяем уровень домена и леса:

После этого необходимо проверить корректность работы репликации между Windows DC и Samba DC, используя

Если при работе команды получаем предупреждение

следует проверить список портов и посмотреть, что в логах:

Бывает, банально забыли перенастроить файрвол или соединение блокирует тот же SELinux. Запуск репликации производится командой

Для проверки корректности выполнения репликации между контроллерами домена попробуем добавить пользователя на Samba, используя samba-tool и консоль администрирования на Win. Параметров у запроса может быть много, но в самом простом случае достаточно ввести

Проверь, что новые пользователи появились на контроллере домена Win и в списках Samba. Для удаления используем вместо add команду delete, отключить — disable, изменить пароль — setpassword. Отключим срок действия пароля для учетной записи:

В отличие от Samba 3, Samba 4 не требует дублирования доменного пользователя локальной учетной записью. Проверяем доступность GUID объектов для нового хоста:

Для информации о пользователях можно использовать утилиту wbinfo, ключ -u позволит посмотреть список доменных пользователей, -g — групп.

Смотрим значение ID и SID:

Новый КД готов. Автоматическое обновление DNS производится за счет периодического запуска (каждые десять минут) скрипта samba_dnsupdate. Скрипт опирается на шаблон имен DNS /var/lib/samba/private/dns_update_list . Структура его проста, и при необходимости можно его изменять, добавляя собственные узлы. Для управления DNS-записью вручную используется samba-tool. Синтаксис прост:

Теперь можем прописывать сервер Samba в качестве DNS-сервера и переезжать.

Передача роли

Перед тем как производить дальнейшие операции, следует позаботиться о резервной копии AD, мало ли что пойдет не так. Как и в случае с Win-системой, роли хозяина операций с одного КД (PDC) можно передать на другой КД (BDC) или принудительно забрать роли с PDC на BDC. Первый способ описан в документации MS, проще для этого использовать GUI-средства — MMC-консоль «Схема Active Directory» (если ее нет, в окне выбора MMC нужно ввести regsvr32 schmmgmt.dll), консоли «Active Directory — домены и доверие» и «Active Directory — пользователи и компьютеры». Другой вариант — использовать командную утилиту ntdsutil.

Принудительное принятие роли на Samba 4 некоторое время считалось нерекомендуемым вариантом, но сейчас вроде бы таких ограничений нет. Чтобы захватить все роли, вводим

Иногда приходится добавлять параметр --force . Можно забрать конкретную роль, для чего ее указываем вместо all: rid, schema, naming, pdc и infrastructure. Проверяем:

Команда transfer позволяет передать роли другому контроллеру домена:

Для управления доменом, работающим под Samba, используем стандартные утилиты администрирования серверной Win или для клиентских ОС Win — Administration Tools Pack/RSAT. Некоторые операции можем производить и при помощи samba-tool. Например, поднимем функциональный уровень леса до Win 2008 R2:

Также в контексте domain можем просмотреть и изменить установки паролей:

Установим минимальную длину пароля в десять символов:

Просмотр установок паролей

Просмотр установок паролей

Вывод

Проект Samba развивается быстрыми темпами, и в настоящее время использование *nix-систем в качестве контролера домена не выглядит таким уже пугающим. Все настройки просты и понятны, многие действия, ранее требовавшие серьезного разбора, теперь производятся автоматически.

Читайте также: