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's 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 Team, хотя ранее вносили свой вклад и другие люди, особенно Джереми Эллисон . [7]
Версия 2.0.0, выпущенная в январе 1999 года, была основным релизом, поддерживающим аутентификацию с помощью основного контроллера домена Windows NT, поддержку 64-битной файловой системы для очень больших файлов и предоставление OPLOCKS системам Unix. [ необходима цитата ] Версия 2.2.0 выпущена в апреле 2001 года. [ необходима цитата ]
Некоторые версии Samba 3.6.3 и ниже имеют серьезные проблемы безопасности, которые могут позволить анонимным пользователям получить root- доступ к системе из анонимного соединения посредством эксплуатации ошибки в удаленном вызове процедур Samba . [30]
12 апреля 2016 года был раскрыт Badlock, [31] критическая ошибка безопасности в Windows и Samba. Badlock для Samba упоминается в CVE|2016-2118 (возможны атаки SAMR и LSA man in the middle). [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 Team и Люком Лейтоном по поводу направлений проекта Samba. Они не смогли прийти к соглашению о пути перехода разработки, который позволил бы исследовательскую версию Samba, которую он разрабатывал (известную в то время как Samba-NTDOM), медленно интегрировать в Samba. [42] Разработка была минимальной из-за нехватки разработчиков. Команда Samba TNG часто направляла потенциальных пользователей в сторону Samba из-за ее лучшей поддержки и разработки. [43]
Ключевой целью проекта Samba TNG было переписать все службы доменов NT как проекты FreeDCE . [44] Это было сложно, поскольку службы разрабатывались вручную с помощью сетевого обратного проектирования, с ограниченной ссылкой на документацию DCE/RPC или без нее. [ необходима цитата ]
Ключевое отличие от Samba заключалось в реализации набора протоколов NT Domains и служб MSRPC . Samba делает все службы NT Domains доступными из одного места, тогда как Samba TNG выделила каждую службу в свою собственную программу. [ необходима цитата ]
ReactOS начала использовать сервисы Samba TNG для своей реализации SMB. Разработчики обоих проектов были заинтересованы в том, чтобы увидеть дизайн Samba TNG, используемый для того, чтобы ReactOS мог общаться с сетями Windows. Они работали вместе, чтобы адаптировать сетевой код и построить систему. Многоуровневый и модульный подход упростил портирование каждого сервиса в ReactOS. [45]