Samba — это бесплатная программная реализация сетевого протокола SMB , первоначально разработанная Эндрю Триджелом . Samba предоставляет службы файлов и печати для различных клиентов Microsoft Windows [5] и может интегрироваться с доменом Microsoft Windows Server либо в качестве контроллера домена (DC), либо в качестве члена домена. Начиная с версии 4, он поддерживает домены Active Directory и Microsoft Windows NT .
Samba работает на большинстве Unix-подобных систем, таких как Linux , Solaris , AIX и варианты BSD , включая Apple macOS ( Mac OS X 10.2 и выше) и macOS Server . Samba также работает в ряде других операционных систем, таких как OpenVMS и IBM i . Samba входит в стандартную комплектацию почти всех дистрибутивов Linux и обычно включается в качестве базовой системной службы в другие операционные системы на базе Unix. Samba выпускается на условиях GNU General Public License . Название Samba происходит от SMB ( Server Message Block ), названия собственного протокола, используемого сетевой файловой системой Microsoft Windows.
Эндрю Триджелл разработал первую версию Samba Unix в декабре 1991 и январе 1992 года, будучи аспирантом Австралийского национального университета , используя анализатор пакетов для сетевого анализа протокола, используемого серверным программным обеспечением DEC Pathworks . На момент выхода первых выпусков, версий 0.1, 0.5 и 1.0, у него не было официального названия, все они датированы первой половиной января 1992 года; Триджелл просто называл его «файловым сервером Unix для Dos Pathworks». Он понял, что «фактически реализовал протокол netbios» во время версии 1.0 и что «это программное обеспечение можно использовать с другими клиентами ПК». [ нужна цитата ]
Сосредоточив внимание на совместимости с Microsoft LAN Manager , Триджелл выпустил «netbios for unix», Observer, версию 1.5 в декабре 1993 года. Этот выпуск был первым, который включал клиентское программное обеспечение, а также сервер. Кроме того, в это время в качестве лицензии была выбрана GPL2. [ нужна цитата ]
В середине серии 1.5 имя было изменено на smbserver . Однако Триджелл получил уведомление о регистрации товарного знака от компании Syntax, которая продавала продукт под названием TotalNet Advanced Server и владела товарным знаком SMBserver. Имя «Samba» было получено путем запуска команды Unix grep в системном словаре в поисках слов, содержащих буквы S, M и B, в этом порядке (т. е. ). [6]grep -i '^s.*m.*b' /usr/share/dict/words
Версии 1.6, 1.7, 1.8 и 1.9 последовали относительно быстро, причем последняя была выпущена в январе 1995 года. Триджелл считает, что принятие CVS в мае 1996 года ознаменовало рождение команды Samba, хотя в нее внесли вклад и другие люди, особенно Джереми Эллисон , ранее. [7]
Версия 2.0.0 была выпущена в январе 1999 года, а версия 2.2.0 — в апреле 2001 года.
Версия 3.0.0, выпущенная 23 сентября 2003 г., стала серьезным обновлением. Samba получила возможность присоединяться к Active Directory в качестве члена, но не в качестве контроллера домена. [8] В последующих версиях версии 3.0 были добавлены незначительные новые функции. На данный момент последней версией этой серии является 3.0.37, выпущенная 1 октября 2009 г. и распространяемая на добровольной основе. [9] Серия 3.0.x официально завершилась 5 августа 2009 года. [9]
Версия 3.1 использовалась только для разработки.
В версии 3.2 проект решил перейти на выпуски по времени. Новые основные выпуски, такие как 3.3, 3.4 и т. д., будут появляться каждые шесть месяцев. Новые функции будут добавлены только после выхода основного выпуска, точечные выпуски будут предназначены только для исправления ошибок. [10] Кроме того, версия 3.2 ознаменовала изменение лицензии с GPL2 на GPL3, при этом некоторые части были выпущены под лицензией LGPL3. [4] Основное техническое изменение в версии 3.2 заключалось в автоматической генерации большей части кода DCE/RPC , который раньше создавался вручную. Версия 3.2.0 была выпущена 1 июля 2008 года. [11] и ее текущая версия - 3.2.15 от 1 октября 2009 года. Серия 3.2.x официально завершилась 1 марта 2010 года. [11]
Некоторые версии Samba 3.6.3 и ниже имеют серьезные проблемы с безопасностью, которые могут позволить анонимным пользователям получить root- доступ к системе через анонимное соединение, используя ошибку в удаленном вызове процедуры Samba . [30]
12 апреля 2016 года была обнаружена Badlock [31] — серьезная ошибка безопасности в Windows и Samba. Бэдлок для Samba упоминается в CVE|2016-2118 (возможны атаки SAMR и LSA посередине). [32]
24 мая 2017 года было объявлено, что в Samba была обнаружена уязвимость удаленного выполнения кода под названием EternalRed или SambaCry , затрагивающая все версии, начиная с 3.5.0. [33] Этой уязвимости присвоен идентификатор CVE|2017-7494. [33] [34]
14 сентября 2020 года была опубликована экспериментальная версия уязвимости Netlogon под названием Zerologon (CVE|2020-1472), исправление для которой существует с августа. [35] Некоторым федеральным агентствам, использующим это программное обеспечение, было приказано установить патч. [36]
Samba позволяет совместно использовать файлы и принтеры между компьютерами под управлением Microsoft Windows и компьютерами под управлением Unix. Это реализация десятков сервисов и десятков протоколов, среди которых:
Все эти службы и протоколы часто ошибочно называют просто NetBIOS или SMB. Протоколы NBT (NetBIOS через TCP/IP) и WINS, а также лежащий в их основе протокол SMB версии 1 устарели в Windows. Начиная с Windows Vista, протокол WS-Discovery был включен вместе с SMB2 и его преемниками, которые заменяют их. (WS-Discovery реализуется на Unix-подобных платформах сторонними демонами , которые позволяют обнаруживать общие ресурсы Samba, когда устаревшие протоколы отключены).
Samba устанавливает общие сетевые ресурсы для выбранных каталогов Unix (включая все содержащиеся в них подкаталоги). Пользователям Microsoft Windows они кажутся обычными папками Windows, доступными через сеть. Пользователи Unix могут либо смонтировать общие ресурсы непосредственно как часть своей файловой структуры с помощью команды mount.cifs, либо, в качестве альтернативы, могут использовать утилиту smbclient (libsmb), установленную вместе с Samba, для чтения общих ресурсов с интерфейсом, аналогичным стандартной командной строке FTP . программа. Каждый каталог может иметь разные привилегии доступа, наложенные поверх обычной защиты файлов Unix. Например: домашние каталоги будут иметь доступ на чтение/запись для всех известных пользователей, что позволит каждому получить доступ к своим файлам. Однако они по-прежнему не будут иметь доступа к файлам других, если обычно не существует такого разрешения. Обратите внимание, что общий ресурс netlogon, обычно распространяемый как общий ресурс только для чтения /etc/samba/netlogon
, является каталогом входа в систему для сценариев входа пользователя.
Службы Samba реализованы в виде двух демонов :
Конфигурация Samba достигается путем редактирования одного файла (обычно устанавливается как /etc/smb.conf
или /etc/samba/smb.conf
). Samba также может предоставлять сценарии входа в систему пользователей и реализацию групповой политики через poledit
.
Samba включена в большинство дистрибутивов Linux и запускается во время загрузки. Например, в Red Hat /etc/rc.d/init.d/smb
сценарий запускается во время загрузки и запускает оба демона. Samba не включена в Solaris 8, но совместимая с Solaris 8 версия доступна на веб-сайте Samba. ArcaOS на базе OS /2 включает Samba для замены старого программного обеспечения IBM LAN Server . [38]
Samba включает в себя инструмент веб-администрирования под названием Samba Web Administration Tool (SWAT). [39] [40] SWAT был удален, начиная с версии 4.1. [41]
Samba TNG (The Next Generation) была разделена в конце 1999 года после разногласий между руководителями команды Samba и Люком Лейтоном по поводу направлений проекта Samba. Им не удалось прийти к соглашению о пути перехода к разработке, который позволил бы медленно интегрировать разрабатываемую им исследовательскую версию Samba (известную в то время как Samba-NTDOM) в Samba. [42] Развитие было минимальным из-за нехватки разработчиков. Команда Samba TNG часто направляла потенциальных пользователей на Samba из-за ее лучшей поддержки и развития. [43]
Ключевой целью проекта Samba TNG было переписать все службы доменов NT как проекты FreeDCE . [44] Это было затруднено, поскольку услуги разрабатывались вручную посредством обратного проектирования сети с ограниченной ссылкой или вообще без ссылки на документацию DCE/RPC. [ нужна цитата ]
Ключевое отличие от Samba заключалось в реализации набора протоколов NT Domains и служб MSRPC . Samba делает все службы доменов NT доступными из одного места, тогда как Samba TNG выделила каждую службу в отдельную программу. [ нужна цитата ]
ReactOS начала использовать сервисы Samba TNG для реализации SMB. Разработчики обоих проектов были заинтересованы в том, чтобы дизайн Samba TNG использовался для взаимодействия ReactOS с сетями Windows. Они вместе работали над адаптацией сетевого кода и созданием системы. Многоуровневый и модульный подход упростил перенос каждого сервиса на ReactOS. [45]