Что такое samba windows

Пожалуй нет ни одного офиса, в котором не применялись бы общие ресурсы локальной сети, будь то папки или принтеры. Крупные и средние компании используют возможности Active Directory, компании поменьше — используют штатные средства ОС Windows или Samba, но на серверах под управлением ОС Linux. Рассмотрим все случаи.

Как настроить Samba?

  • Что такое Samba?
  • Как настроить общую папку
  • Как настроить общую папку в Linux
  • Как настроить общую папку в Windows
  • Как подключиться к общей папке
  • Как подключиться к общей папке Linux
  • Как подключиться к общей папке Windows
  • Как создать общий сетевой ресурс в Samba

Что такое Samba?

Samba — серверное приложение, реализующее доступ клиентских терминалов к папкам, принтерам и дискам про протоколу SMB/CIFS.

Описание структуры Samba

Настройка общих папок

Linux

Установка и настройка Samba-сервер для Ubuntu выполняется следующими этапами.

Обновляем информацию о репозиториях и устанавливаем обновления для существующих пакетов в системе:

apt-get update && apt-get upgrade

Устанавливаем пакет Samba:

apt-get install -y samba samba-client

Создадим резервную копию файла конфигурации:

cp /etc/samba/smb.conf /etc/samba/smb.conf_sample

Создадим директории для файлов, например в каталоге /media:

mkdir /media/samba

Важно! По умолчанию, директория /media располагается в корне системы /, для нее редко создается свой раздел. По этой причине возможно переполнение корневого раздела. Во избежание этой неприятной ситуации, рекомендуем монтировать отдельный жесткий диск в /media/samba.

Создаем каталог для всех пользователей:

mkdir /media/samba/public

Изменим права доступа к каталогу:

chmod -R 0755 /media/samba/public

Также следует воспользоваться командой chown для смены владельца и/или группы.

Создаем директорию для ограниченного круга лиц:

mkdir /media/samba/private

С помощью системных инструментов создадим группу пользователей:

groupadd smbgrp

Добавляем пользователей Samba:

useradd user1

Созданных пользователей добавляем в группу:

usermod -aG smbgrp user1

Изменим группу, которой принадлежит приватная директория:

chgrp smbgrp /media/samba/private

С помощью инструментов Samba создадим пароль для добавленного пользователя:

smbpasswd -a user1

С помощью текстового редактора, например, nano, редактируем конфигурационный файл samba:

nano /etc/samba/smb.conf

Удаляем все строки из файла. Вставляем следующие:

[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]
path = /media/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]
path = /media/samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes

Сохраняем используя сочетание Ctrl + X, затем нажимаем Y и Enter.

Объясним значения строк. конфигурационный файл состоит из трех секций:

global — данная секция отвечает за общие настройки Samba-сервера;

public и private — секции описания настроек директорий общего доступа.

В секции global присутствуют пять параметров:

  • workgroup — рабочая группа. Для упрощения работы пользователей WORKGROUP указывается, как группа по умолчанию. Если в вашей сети имя рабочей группы изменено, то следует изменить это значение и для Samba;
  • security — уровень безопасности сервера. Значение user означает авторизацию по паре логин/пароль;
  • map to guest — параметр определяет способ обработки запросов. Значение bad user означает, что запросы с неправильным паролем будут отклонены, даже если такое имя пользователя существует;
  • wins support — включить или выключить поддержку WINS;
  • dns proxy — возможность проксирования запросов к DNS.

Настройки директорий выполняются в соответствующих секциях:

path — полный путь до директории на жестком диске;

guest ok — возможность доступа к каталогу без пароля (гостевой);

browsable — показывать ли каталог (“шару”) на сервере среди прочих. Если параметр установлен как “no”, то доступ будет возможен по полному пути, например ip-addresshidden_directory;

force user — пользователь от которого ведется работа с каталогом. Для повышения безопасности сервера, обычно используют nobody. Главное, не использовать пользователя root — это небезопасно.

writable — установка значения как “yes” позволяет пользователю выполнять действия над файлами внутри каталога — переименование, добавление, удаление, перемещение в подкаталог и копирование;

valid users — список пользователей у которых есть доступ к каталогу. Если пользователей несколько, их имена указываются через запятую. Если необходим доступ для пользователей принадлежащих группе, перед именем группы устанавливается символ ”at” @ (“собака”).

Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.

Проверяем настройки с помощью команды:

testparm -s

Перезапускаем сервер:

service smbd restart

service nmbd restart

Настроим межсетевой экран. Для этого в правилах откроем TCP-порты 139 и 445, а также UDP-порты 137 и 138, но только для тех подсетей, которым доверяете. Для указания собственного диапазона адресов, замените значение после ключа “-s”:

iptables -A INPUT -p tcp -m tcp --dport 445 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 139 -s 10.0.0.0/24 -j ACCEPT

iptables -A INPUT -p udp -m udp --dport 137 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 138 -s 10.0.0.0/24 -j ACCEPT

Для сохранения правил и применения их после перезагрузки сервера следует воспользоваться пакетом iptables-persistent. Установим его:

apt-get install iptables-persistent

Входе установки пакета, программа предложит запомнить существующие правила iptables. Подтверждаем это действие.

Для проверки существующих правил используем:

iptables -L

Windows

По аналогии с Linux, настроим общий доступ к папкам public и private, но в ОС Windows.

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

Панель управления → Сеть → Центр управления сетями и общим доступом → Расширенные настройки общего доступа.

В обновленном окне открываем раздел “Все сети” и ищем секцию “Общий доступ с парольной защитой”. Устанавливаем параметр в положение “Отключить общий доступ с парольной защитой”. Для сохранения значений параметра кликаем по кнопке “Сохранить изменения”.

Отключаем общий доступ с парольной защитой

Теперь откроем доступ к самому каталогу. Кликаем по папке правой кнопкой мыши, в контекстном меню выбираем “Свойства”. Открываем вкладку “Доступ” и кликаем по “Расширенная настройка”.

Выбираем расширенную настройку

В открывшемся окне расширенных настроек общего доступа отмечаем галочкой “Открыть общий доступ к этой папке”, в поле “Имя общего ресурса” указываем название, которое будет отображено пользователям. Кликаем по кнопке “Разрешения”.

В открывшемся окне, в группах пользователей выбираем “Все”, а в разрешениях для группы, устанавливаем галку “Полный доступ”. Нажимаем “OK” в этом и остальных окнах.

Выбираем саму группу и разрешения для группы

В окне свойств папки public кликаем по кнопке “Общий доступ”.

Общий доступ к файлам в Samba | Serverspace

В открывшемся окне добавляем пользователя “Все”, а также делегируем права на “Чтение и запись”. Кликаем по кнопке “Поделиться”.

Выбираем права и делимся ими с пользователями

В обновленном окне нажимаем “Готово”.

Нажимаем готово

Настроим папку общего доступа, но для ограниченного круга лиц.

Кликаем правой кнопкой мыши по папке, выбираем “Свойства”.

В открывшемся окне переходим на вкладку “Доступ”. Кликаем по кнопке “Расширенные настройки”.

В новом открывшемся окне, устанавливаем галку “Открыть общий доступ к этой папке”. Затем кликаем по кнопке “Разрешения”.

Открываем общий доступ к этой папке

В открывшемся окне, в поле “Группы или пользователи” выбираем “Все” и нажимаем кнопку “Удалить”.

Удаляем пользователя

Таким образом установлен запрет на анонимный доступ к папке.

Окно обновится. Кликаем по кнопке “Добавить”.

В открывшемся окне кликаем по кнопке “Дополнительно”.

Выбираем дополнительные параметры

Окно изменится в размере. Кликаем по кнопке “Поиск”. Двойным кликом выбираем пользователя, которому необходим доступ к этому каталогу, например, buhgalter.

Добавляем пользователя которому нужен доступ к этому каталогу

В открывшемся окне, при желании, можем добавить еще одного пользователя через “Дополнительно” — “Поиск”. Аналогичным образом можно добавить группу пользователей, например, “Администраторы”, при этом следует понимать, что доступ будет предоставлен всем пользователям из этой группы.

При желании добовляем еще одного пользователя

Установим права доступа для пользователя “buhgalter”. Если требуется полный доступ к директории, устанавливаем галку в соответствующем месте.

Пример установки прав для группы пользователей

Нажимая кнопки “OK” возвращаемся к окну свойств папки, в котором кликаем по кнопке “Общий доступ”.

Возвращаемся обратно и выбираем общий доступ

В данном окне необходимо найти и добавить пользователя “бухгалтер”.

Ищем нашего пользователя и добавляем его

В окне выбора пользователей и групп кликаем по кнопке “Дополнительно”.

Выбираем дополнительные параметры

Окно снова изменит свои размеры. Кликаем по кнопке “Поиск”. В найденном ниже списке пользователей и групп выбираем искомого пользователя. Выбираем его двойным кликом.

Выбираем пользователей

В оставшемся окне проверяем правильно ли указан пользователи и нажимаем кнопку “OK”.

Проверяем выбранного пользователя

Устанавливаем требуемый уровень разрешений для пользователя и кликаем по кнопке “Поделиться”.

Добавляем права и делимся ими

Кликаем по кнопке “Готово”.

Теперь папка общего доступа доступна

Подключение к общим папкам

Из Linux

Для подключения к общим папкам из среды Linux требуется установка отдельного программного обеспечения — smbclient. Установим:

sudo apt-get install smbclient

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

smbclient -U <Имя_пользователя> <IP-адрес><Имя_каталога_на_сервере>

Пример:

smbclient -U buhgalter 10.0.0.1public

Для того, Чтобы не вводить эту команду каждый раз, можно настроить монтирование общей директории как сетевого диска. Для этого установим пакет cifs-utils:

sudo apt-get install cifs-utils

Монтирование выполняется по следующему шаблону:

mount -t cifs -o username=<Имя_пользователя>,password= //<IP-адрес>/<Общий каталог> <Точка монтирования>

Пример:

mount -t cifs -o username=Everyone,password= //10.0.0.1/public /media

Важно! Если требуется подключение к общим папкам расположенным на Windows-сервере, то в для не защищенных паролем директорий, в качестве имени пользователя, следует использовать “Everyone”. Для подключения к Linux-серверу рекомендуем использовать в качестве имени пользователя “nobody”. В случае доступа к защищенным директориям следует использовать те учетные данные, которые вы указали.

Из Windows

Подключение к удаленным папкам из среды Windows выполняется немного иначе. Для этого в проводнике или окне запуска программ (Windows + R), следует использовать следующий шаблон:

<IP-адрес><имя_папки>

Указав просто IP-адрес сервера вы получите список общих папок.

Список общих папок

При подключении к Windows-сервер, система безопасности может потребовать ввод учетных данных. Для подключения к общей открытой папке используем Everyone, а поле пароля оставляем пустым.

Для подключения к общей папке выбираем Everyone и пустое поле для пароля

При подключении к Linux-серверу из ОС Windows, следует использовать указанный ранее шаблон:

<IP-адрес><имя_папки>

или просто адрес сервера:

<IP-адрес>

Как создать общий сетевой ресурс в Samba

Создайте директорию, которую в хотите сделать общей:

mkdir /home/<user_name>/<folder_name></folder_name></user_name>

Создайте бэкап, если что-то пойдет не так:

sudo cp /etc/samba/smb.conf ~

Отредактируйте файл «/etc/samba/smb.conf»:

sudo nano /etc/samba/smb.conf

Добавьте следующее содержимое в файл:

[<folder_name>]
path = /home/<user_name>/<folder_name>
valid users = <user_name>
read only = no</user_name></folder_name></user_name></folder_name>

Заполните файл своими данными, сохраните его и затем закройте

Перезапустим Samba:
sudo service smbd restart

Использую данную команду проверьте вашу директорию smb.conf на ошибки:

testparm

Чтобы получить доступ к вашему общему сетевому ресурсу:

sudo apt-get install smbclient
# Просмотр всех общих ресурсов:
smbclient -L //<host_ip_or_name>/<folder_name> -U <user>
# Подключение:
smbclient //<host_ip_or_name>/<folder_name> -U <user></user></folder_name></host_ip_or_name></user></folder_name></host_ip_or_name>

Note 1: Чтобы подключиться к вашему общему сетевому ресурсу используйте имя вашего пользователя () и пароль, который находится «smb:////»
Учтите, что «» значение передается в «[]»,
другими словами, имя общего ресурса, которое вы ввели в «/etc/samba/smb.conf».
Note 2: Группа пользователей samba по умолчанию это — «WORKGROUP».

From Wikipedia, the free encyclopedia

Samba

Initial release 1992; 33 years ago[1]
Stable release

4.22.1[2] 
/ 17 April 2025

Repository
  • git.samba.org
Written in C, Python
Operating system Multiplatform
Type Network file system
License 2008: GPL-3.0-or-later[a]
1993: GPL-2.0-or-later[b]
1992: Proprietary[c]
Website www.samba.org

Samba is a free software re-implementation of the SMB networking protocol, and was originally developed by Andrew Tridgell. Samba provides file and print services for various Microsoft Windows clients[5] and can integrate with a Microsoft Windows Server domain, either as a Domain Controller (DC) or as a domain member. As of version 4, it supports Active Directory and Microsoft Windows NT domains.

Samba runs on most Unix-like systems, such as Linux, Solaris, AIX and the BSD variants, including Apple macOS (Mac OS X 10.2 and greater) and macOS Server. Samba also runs on a number of other operating systems such as OpenVMS and IBM i. Samba is standard on nearly all distributions of Linux and is commonly included as a basic system service on other Unix-based operating systems as well. Samba is released under the terms of the GNU General Public License. The name Samba comes from SMB (Server Message Block), the name of the proprietary protocol used by the Microsoft Windows network file system.

Andrew Tridgell developed the first version of Samba Unix in December 1991 and January 1992, as a PhD student at the Australian National University, using a packet sniffer to do network analysis of the protocol used by DEC Pathworks server software. It did not have a formal name at the time of the first releases, versions 0.1, 0.5, and 1.0, all from the first half of January 1992; Tridgell simply referred to it as «a Unix file server for Dos Pathworks.» He understood that he had «in fact implemented the netbios protocol» at the time of version 1.0 and that «this software could be used with other PC clients.»[citation needed]

With a focus on interoperability with Microsoft’s LAN Manager, Tridgell released «netbios for unix», observer, version 1.5 in December 1993. This release was the first to include client-software as well as a server. Also, at this time GPL2 was chosen as license.[citation needed]

Midway through the 1.5-series, the name was changed to smbserver. However, Tridgell got a trademark notice from the company «Syntax», who sold a product named TotalNet Advanced Server and owned the trademark for «SMBserver». The name «Samba» was derived by running the Unix command grep through the system dictionary looking for words that contained the letters S, M, and B, in that order (i.e. grep -i '^s.*m.*b' /usr/share/dict/words).[6]

Versions 1.6, 1.7, 1.8, and 1.9 followed relatively quickly, with the latter being released in January 1995. Tridgell considers the adoption of CVS in May 1996 to mark the birth of the Samba Team, though there had been contributions from other people, especially Jeremy Allison, previously.[7]

Version 2.0.0, released in January 1999, was a major release, support for authentication from Windows NT Primary Domain Controller, 64 bit filesystem support for very large files, and exposure of OPLOCKS to unix systems.[citation needed] Version 2.2.0 released in April 2001.[citation needed]

Legend:

Old version, not maintained

Old version, still maintained

Latest version

Latest preview version

Future version

Date Version Description
23 September 2003 3.0 Active Directory support.[8] The 3.0.x series officially reached end-of-life on 5 August 2009.[9]
1 July 2008 [10] 3.2 It will be updated on an as-needed basis for security issues only.[11][12] There was a change of license from GPL2 to GPL3, with some parts released under LGPL3.[4] The 3.2.x series officially reached EOL 1 March 2010.[10]
27 January 2009 3.3
3 July 2009 3.4 This was the first release to include both Samba 3 and Samba 4 source code.[13]
1 March 2010 3.5 This was the first release to include experimental support for SMB2.[14]
9 August 2011 3.6 This is the first branch which includes full support for SMB2.[15]
11 December 2012 4.0 It is a major rewrite that enables Samba to be an Active Directory domain controller, participating fully in a Windows Active Directory Domain. Its first technical preview (4.0.0TP1) was released in January 2006 after 3 years of development.[16][17]
10 October 2013 4.1 support for SMB3
4 March 2015 4.2 Btrfs based file compression, snapshots and winbind integration[18]
8 September 2015 4.3 New Logging features, SMB 3.1.1 support[19]
22 March 2016 4.4 Asynchronous flush requests[20]
7 September 2016 4.5 NTLM v1 disabled by default, Virtual List View, Various performance improvements
7 March 2017 4.6 Multi-process Netlogon support
21 September 2017 4.7 Samba AD with MIT Kerberos
13 March 2018 4.8 Apple Time Machine Support. Setups using ‘domain’ or ‘ads’ security modes now require ‘winbindd’ to be running.[21]
13 September 2018 4.9 Many changes[22]
19 March 2019 4.10
17 September 2019 4.11 SMB1 is disabled by default as a mitigation for the WannaCry vulnerability.
3 March 2020 4.12
22 September 2020 4.13 Samba 4.13 raises the minimum version of Python to 3.6.
9 March 2021 4.14 Major overhaul of VFS subsystem and more.[23]
20 September 2021 4.15 Many changes.[24]
21 March 2022 4.16 Many changes.[25]
13 September 2022 4.17 Many changes.[26]
8 March 2023 4.18 Many changes.[27]
4 September 2023 4.19 Many changes.[28]
27 March 2024 4.20 Many changes.[29]

Some versions of Samba 3.6.3 and lower suffer serious security issues which can allow anonymous users to gain root access to a system from an anonymous connection, through the exploitation of an error in Samba’s remote procedure call.[30]

On 12 April 2016, Badlock,[31] a crucial security bug in Windows and Samba, was disclosed. Badlock for Samba is referenced by CVE|2016-2118 (SAMR and LSA man in the middle attacks possible).[32]

On 24 May 2017, it was announced that a remote code execution vulnerability had been found in Samba named EternalRed or SambaCry, affecting all versions since 3.5.0.[33] This vulnerability was assigned identifier CVE|2017-7494.[33][34]

On 14 September 2020, a proof-of-concept exploit for the netlogon vulnerability called Zerologon (CVE|2020-1472) for which a patch exists since August was published.[35] Some federal agencies using the software have been ordered to install the patch.[36]

Samba allows file and print sharing between computers running Microsoft Windows and computers running Unix. It is an implementation of dozens of services and a dozen protocols, including:

  • NetBIOS over TCP/IP (NBT)
  • SMB (known as CIFS in some versions)
    • Samba supports POSIX extensions for CIFS/SMB. The initial extension was CIFS VFS (CAP_UNIX) from 2004, which has been somewhat superseded by SMB3.[37]
  • DCE/RPC or more specifically, MSRPC, the Network Neighborhood suite of protocols
  • A WINS server also known as a NetBIOS Name Server (NBNS)
  • The NT Domain suite of protocols which includes NT Domain Logons
  • Security Account Manager (SAM) database
  • Local Security Authority (LSA) service
  • NT-style printing service (SPOOLSS)
  • NTLM
  • Active Directory Logon using modified versions of Kerberos and LDAP
  • DFS server

All these services and protocols are frequently incorrectly referred to as just NetBIOS or SMB. The NBT (NetBIOS over TCP/IP) and WINS protocols, and their underlying SMB version 1 protocol, are deprecated on Windows. Since Windows Vista the WS-Discovery protocol has been included along with SMB2 and its successors, which supersede these. (WS-Discovery is implemented on Unix-like platforms by third party daemons which allow Samba shares to be discovered when the deprecated protocols are disabled).

Samba sets up network shares for chosen Unix directories (including all contained subdirectories). These appear to Microsoft Windows users as normal Windows folders accessible via the network. Unix users can either mount the shares directly as part of their file structure using the mount.cifs command or, alternatively, can use a utility, smbclient (libsmb) installed with Samba to read the shares with a similar interface to a standard command line FTP program. Each directory can have different access privileges overlaid on top of the normal Unix file protections. For example: home directories would have read/write access for all known users, allowing each to access their own files. However they would still not have access to the files of others unless that permission would normally exist. Note that the netlogon share, typically distributed as a read only share from /etc/samba/netlogon, is the logon directory for user logon scripts.

Samba services are implemented as two daemons:

  • smbd, which provides the file and printer sharing services, and
  • nmbd, which provides the NetBIOS-to-IP-address name service. NetBIOS over TCP/IP requires some method for mapping NetBIOS computer names to the IP addresses of a TCP/IP network.

Samba configuration is achieved by editing a single file (typically installed as /etc/smb.conf or /etc/samba/smb.conf). Samba can also provide user logon scripts and group policy implementation through poledit.

Samba is included in most Linux distributions and is started during the boot process. On Red Hat, for instance, the /etc/rc.d/init.d/smb script runs at boot time, and starts both daemons. Samba is not included in Solaris 8, but a Solaris 8-compatible version is available from the Samba website. The OS/2-based ArcaOS includes Samba to replace the old IBM LAN Server software.[38]

Samba includes a web administration tool called Samba Web Administration Tool (SWAT).[39][40]
SWAT was removed starting with version 4.1.[41]

This section needs to be updated. Please help update this article to reflect recent events or newly available information. (January 2016)

Samba TNG (The Next Generation) was forked in late 1999, after disagreements between the Samba Team leaders and Luke Leighton about the directions of the Samba project. They failed to come to an agreement on a development transition path which allowed the research version of Samba he was developing (known at the time as Samba-NTDOM) to slowly be integrated into Samba.[42] Development has been minimal, due to a lack of developers. The Samba TNG team frequently directed potential users towards Samba because of its better support and development.[43]

A key goal of the Samba TNG project was to rewrite all of the NT Domains services as FreeDCE projects.[44] This was made difficult as the services were developed manually through network reverse-engineering, with limited or no reference to DCE/RPC documentation.[citation needed]

A key difference from Samba was in the implementation of the NT Domains suite of protocols and MSRPC services. Samba makes all the NT Domains services available from a single place, whereas Samba TNG separated each service into its own program.[citation needed]

ReactOS started using Samba TNG services for its SMB implementation. The developers of both projects were interested in seeing the Samba TNG design used to help get ReactOS talking to Windows networks. They worked together to adapt the network code and build system. The multi-layered and modular approach made it easy to port each service to ReactOS.[45]

  • LM hash
  • SSLBridge
  1. ^ GPL-3.0-or-later and LGPL-3.0-or-later since 2008-07-01, version 3.2.0.[3][4]
  2. ^ GPL-2.0-or-later from 1993, version 1.5, until 2009-10-01, version 3.0.37.
  3. ^ Proprietary from 1992 until 1993.
  1. ^ «Samba Latest News». Retrieved 28 November 2017.
  2. ^ «[Announce] Samba 4.22.1 Available for Download». 17 April 2025. Retrieved 18 April 2025.
  3. ^ «Samba Copyright Policy».
  4. ^ a b «Samba Adopts GPLv3 for Future Releases». Retrieved 21 September 2015.
  5. ^ «Samba — opening windows to a wider world». www.samba.org. Retrieved 16 January 2024.
  6. ^ Andrew Tridgell and the Samba Team (27 June 1997). «A bit of history and a bit of fun». Archived from the original on 15 August 2020. Retrieved 28 May 2009.
  7. ^ «10 years of Samba!». Retrieved 21 September 2015.
  8. ^ «Samba Team announces the first official release of Samba 3.0». Retrieved 24 September 2003.
  9. ^ «Release Planning for Samba 3.0». Retrieved 21 September 2015.
  10. ^ a b «Release Planning for Samba 3.2». Retrieved 21 September 2015.
  11. ^ «[ANNOUNCE] Samba 3.2.0 Available for Download». Retrieved 21 September 2015.
  12. ^ «Monday, April 28 — Samba Mashup Report». Retrieved 21 September 2015.
  13. ^ «Samba — Release Notes Archive». Retrieved 21 September 2015.
  14. ^ «Samba — Release Notes Archive». Retrieved 21 September 2015.
  15. ^ «Samba — Release Notes Archive». Retrieved 21 September 2015.
  16. ^ «Samba — opening windows to a wider world». Retrieved 21 September 2015.
  17. ^ «Samba 4.0.0TP1 Available for Download». Archived from the original on 22 July 2006. Retrieved 11 January 2014.
  18. ^ «Samba — Release Notes Archive». Retrieved 21 September 2015.
  19. ^ «Samba — Release Notes Archive». Retrieved 8 September 2015.
  20. ^ «Samba — Release Notes Archive». Retrieved 22 March 2016.
  21. ^ «Release Notes for Samba 4.8.0». 13 March 2018. Retrieved 19 March 2019.
  22. ^ «Samba 4.9.0 — Release Notes».
  23. ^ «Samba 4.14.0 — Release Notes».
  24. ^ «Samba 4.15.0 — Release Notes».
  25. ^ «Samba 4.16.0 — Release Notes».
  26. ^ «Samba 4.17.0 — Release Notes».
  27. ^ «Samba 4.18.0 — Release Notes».
  28. ^ «Samba 4.19.0 — Release Notes».
  29. ^ «Samba 4.20.0 — Release Notes».
  30. ^ CVE-2012-1182 — A security announcement regarding a major issue with Samba 3.6.3 and lower.
  31. ^ «Badlock». Archived from the original on 12 April 2016. Retrieved 12 April 2016.
  32. ^ «Microsoft, Samba Patch «Badlock» Vulnerability». Retrieved 13 April 2016.
  33. ^ a b «Samba 4.6.4 — Release Notes». 24 May 2017. Retrieved 24 May 2017.
  34. ^ «SambaCry is coming». Securelist — Kaspersky Lab’s cyberthreat research and reports. Retrieved 19 March 2018.
  35. ^ Cimpanu, Catalin. «Microsoft says it detected active attacks leveraging Zerologon vulnerability». ZDNet. Retrieved 9 October 2020.
  36. ^ Constantin, Lucian (23 September 2020). «What is Zerologon? And why to patch this Windows Server flaw now». CSO Online. Retrieved 9 October 2020.
  37. ^ «UNIX Extensions». SambaWiki.
  38. ^ «ArcaMapper». arcanoae.com. Retrieved 11 September 2020.
  39. ^ «Chapter 37. SWAT: The Samba Web Administration Tool». Retrieved 21 September 2015.
  40. ^ «SWAT your Samba problems». linux.com. 31 January 2008.
  41. ^ «Samba 4.1 Features added/changed». Retrieved 21 September 2015.
  42. ^ «Project FAQ — What is the relationship between Samba and Samba TNG?». Retrieved 19 February 2008.
  43. ^ «Project FAQ — Which should I use — Samba or Samba TNG?». Retrieved 19 February 2008.
  44. ^ «Project FAQ — What’s all this about FreeDCE?». Retrieved 19 February 2008.
  45. ^ Vincent, Brian. «Interview with Steven Edwards». Wine HQ. Retrieved 19 February 2008.

Wikibooks has a book on the topic of: Samba

  • Official website

Серверы играют ключевую роль в работе современных информационных систем, предоставляя доступ к различным ресурсам для пользователей в локальной сети и за ее пределами. Обеспечить правильную работу и доступ к данным, невзирая на то, что организация обмена папками и документами между компьютерами является ключевой функцией, может быть сложной задачей в условиях использования разных операционок, например, Windows и Linux. Облегчить задачу и решить данный вопрос возможно используя сервер Samba — программный инструмент, с помощью которого появляется возможность объединять работающие на разных операционках компьютеры в унифицированную сеть для совместного использования ресурсов.

Про Samba мы уже упоминали в статье Настройка в локальных сетях на Windows и Linux файловых серверов, поэтому сейчас мы разберём подробнее: для чего нужен сервер Samba, почему он стал важным инструментом в IT-инфраструктуре и какие дает возможности пользователям. Инструмент подходит не только для передачи данных между устройствами, но и предоставляет возможность решать более сложные задачи, такие как интеграция с доменами Windows, управление правами доступа, создание печатных серверов и т. д.  

Сервер Samba: что он из себя представляет?

Samba представляет собой коллекцию программных инструментов, созданных для внедрения протокола SMB (Server Message Block) на операционных системах, подобных Unix, в том числе macOS и Linux.

Передача данных и ресурсов, таких как принтеры, между устройствами, использующими Windows — первоначальная идея разработки протокола SMB. Операционные системы на базе Unix (в том числе Linux) могут выступать в качестве файловых серверов и обеспечить совместимость с Windows-системами используя Samba.

Обеспечение пользователей возможностью совместного использования различных ресурсов, документов, каталогов внутри гетерогенной сети с различными операционными системами — это одна из ключевых задач Samba. Прозрачный доступ к документам в различных системах обеспечивается благодаря Samba. Это крайне полезно компаниям, использующим одновременно разные платформы.

Основные функции Samba

  1. Файловый сервер. Одной из ключевых функций Samba является предоставление доступа к документам и директориям в сетевой среде. Инструмент предоставляет возможность платформам macOS и Linux работать совместно с Windows, открывая общие папки для совместного использования, независимо от операционной системы.
  2. Печатный сервер. Samba может выступать в роли печатного сервера, что позволяет сетевым пользователям использовать принтеры, подключенные к Linux-серверу. Это особенно удобно в офисах, где часть рабочих станций работает на Windows, а часть — на Linux.
  3. Контроллер домена. Samba может работать как первичный контроллер домена (PDC) для доменов Windows. Это позволяет централизованно управлять пользователями и их правами доступа в домене, а также организовывать единый вход в систему для всех пользователей домена.
  4. Интеграция с Active Directory. Современные версии Samba поддерживают полную интеграцию с Active Directory (AD) от Microsoft. Это позволяет управлять пользователями, а также устройствами домена Windows на Linux-серверах, что значительно упрощает работу с гетерогенными сетями.
  5. Управление правами доступа. После получения эффективного способа управления доступом к ресурсам благодаря Samba, юзеры получают различные уровни допуска к файлам, что является важным фактором в обеспечении защиты информации в сети. 

Samba: каким образом функционирует?

С помощью протокола SMB/CIFS (Common Internet File System), который служит стандартом для передачи данных на платформе Windows, клиенты имеют возможность обращаться к серверным ресурсам Samba, как если бы это был стандартный файловый сервер Windows.

Работа Samba основана на двух основных демонах:

  • smbd — этот демон обрабатывает запросы SMB на доступ к файлам и ресурсам.
  • nmbd — этот демон отвечает за работу с именами и обеспечивает доступ к серверам через NetBIOS.

Когда клиент, будь то Windows или Linux, запрашивает доступ к файлам на сервере, smbd обрабатывает запрос и проверяет права доступа. Если права доступа разрешают доступ, клиент получает файлы, как если бы это происходило на сервере Windows. nmbd обеспечивает разрешение имен в сети, что позволяет устройствам находить сервер Samba и подключаться к нему по имени хоста.

Преимущества использования Samba

  1. Кроссплатформенность. Одним из главных преимуществ Samba является её способность обеспечить взаимодействие между различными операционными системами. Это особенно актуально в смешанных средах Linux-Windows, где часть серверов и рабочих станций работает на одной платформе, а часть на другой.

  2. Бесплатность и открытость. Сервер Samba распространяется на бесплатной основе. Это возможно благодаря её общедоступному коду, что делает Samba выгодной для компаний, которые хотят снизить затраты на IT-инфраструктуру, не жертвуя функциональностью и совместимостью.
  3. Гибкость настройки. Samba предоставляет возможность детальной настройки сервера в соответствии с уникальными потребностями компании, что выгодно противопоставляет ее многим коммерческим решениям. Администраторы получают возможность устанавливать уровень доступа каждому отдельному юзеру или для целой группы, определять для конкретных документов и каталогов режим доступности, а также совершать интеграцию сервера с существующими решениями на операционной системе Windows.
  4. Высокая безопасность. Samba имеет высокий уровень защиты, несмотря на свою простоту и кроссплатформенность. Администраторы могут настраивать аутентификацию, шифрование данных, а также использовать встроенные механизмы для предотвращения несанкционированного доступа к файлам.
  5. Поддержка Active Directory. Возможность интеграции с Active Directory позволяет организациям, использующим домены Windows, не отказываться от Linux-серверов. Это особенно полезно для крупных сетей с централизованным управлением пользователями и группами.

Недостатки Samba

Несмотря на все свои преимущества, у Samba есть и определенные недостатки:

  1. Сложность настройки. Хотя базовая настройка Samba относительно проста, более сложные конфигурации, такие как интеграция с Active Directory или настройка прав доступа, могут потребовать значительных навыков и времени.
  2. Производительность. В некоторых случаях производительность Samba может уступать нативным решениям для Windows-серверов, особенно при обработке больших объёмов данных или интенсивной работе с файлами.
  3. Поддержка Windows-функций. Несмотря на хорошую интеграцию с Windows, Samba может не поддерживать все функции, доступные в нативной среде Windows Server. Из-за этого некоторые специфические Windows-возможности в сетях могут быть ограничены при использовании Samba.

Linux и Samba: процесс настройки

Произвезти настройку на Linux сервера Samba возможно при выполнении нескольких необходимых шагов.

1. Установка

Большинство дистрибутивов Linux позволяет инсталляцию Samba использую пакетный менеджер. Для Ubuntu или Debian необходимая команда выглядит так:

sudo apt update
sudo apt install samba

Команды в Red Hat и CentOs:

sudo yum install samba

2. Конфигурирование

Конфигуративный документ находится по пути /etc/samba/smb.conf. Рабочие параметры сервера программы управляются из этого файла. Ниже представлена классическая настройка для доступа в коллективную папку:

[global]

workgroup = WORKGROUP
server string = Samba Server
security = user

[shared]

path = /srv/samba/shared
browsable = yes
writable = yes
guest ok = yes
read only = no

На этом примере демонстрируется конфигурация доступа к общей папке по пути /srv/samba/shared. После проведённых манипуляций, директория становится доступной для всех юзеров, не запрашивая при этом дополнительной аутентификации.

3. Создание общей директории и настройка необходимого уровня доступа

Ниже представлен пример создания и конфигурации необходимого уровня доступа к папке:

sudo mkdir -p /srv/samba/shared
sudo chown -R nobody:nogroup /srv/samba/shared
sudo chmod -R 0775 /srv/samba/shared

4. Перезапуск службы Samba

В конце всех настроек конфигурации необходимо провести рестарт службы Samba:

sudo systemctl restart smbd
sudo systemctl enable smbd

Заключение

Создать файлового обмен и совместно использовать ресурсы в смешанных сетевых средах, где функционируют разные операционные системы — для всего этого есть отличное эффективное решение в виде программного сервера Samba. Благодаря своей кроссплатформенной природе, возможностям настройки и бесплатному доступу, он становится отличным вариантом для компаний, желающих интегрировать Windows и Linux в единую инфраструктуру. Однако, как и любое решение, Samba имеет свои недостатки, такие как сложность настройки и возможные ограничения производительности, которые необходимо учитывать при внедрении в корпоративную среду.

Всем привет! Меня зовут Александр, и я большой любитель Хабра, так как он стал моим проводником в мир ИТ. Это моя первая публикация, поэтому для начала расскажу немного о себе.

Лирическое отступление о себе

Ещё в далёких нулевых, когда трава была зеленее, солнце теплее, а санкций не было даже в проекте, я учился в университете и ходил на курсы администрирования Windows, но зачитывался хабровскими статьями о том, как изящно решаются некоторые задачи в Linux. Скажем прямо, разница между этими двумя системами в моих глазах была совсем не в пользу «окошек». И вот уже 9 лет я работаю в ИТ на позициях, связанных с Linux-администрированием и поддержкой различных продуктов на базе этой ОС, за что ещё раз спасибо Хабру.

Начинал я системным администратором ИТ-инфраструктуры в петербургской компании GS-Labs, а перед тем, как попал в Русбитех-Астра, трудился в VK Cloud в подразделении поддержки PaaS (k8s, DBaaS, s3). Сейчас я работаю в команде ALD Pro над продуктом, который заменит на отечественном рынке, ни много ни мало, саму службу Active Directory. Задач много и разных, в основном помогаю системным администраторам заказчиков и интеграторов в отладке сложных кейсов, связанных с использованием компонентов нашего технологического стека, но мне нравится ещё и программировать, поэтому время от времени участвую в разработке различных вспомогательных инструментов. Например, на Хабре уже была статья, в которой упоминалось об одной из моих утилит aldpro-join.exe, с помощью которой можно присоединить Windows-компьютер к домену ALD Pro (FreeIPA) на максимально возможном уровне функциональности.

Совсем недавно я участвовал в проекте по рефакторингу подсистемы общего доступа к файлам на базе Samba и был в очередной раз удивлен, что на любимом Хабре (и даже в рунете в целом) по работе с протоколом SMB в гибридных инфраструктурах Windows/Linux материалов чуть больше, чем ничего. Я уже сталкивался с подобной задачей, когда мне требовалось обеспечить доступ доменным пользователям к хранилке TrueNAS, и тогда на то, чтобы разобраться, как это сделать, у меня ушло не меньше двух недель. Похоже, что за прошедшее время материалов в сети по этому вопросу больше не стало, поэтому позвольте мне поделиться с вами нашими крутыми наработками на эту тему, которые стали доступны уже в версии 2.4.0 — не меркантильной рекламы ради, а успешной реализации проектов импортозамещения для. 

Сегодня мы поговорим о том, как обеспечить надежную работу файлового сервера Samba в больших доменах с Kerberos-аутентификацией и авторизацией через PAC-сертификат, как настроить права доступа на уровне ACL файловой системы, как на самом деле работает стандартная проверка прав доступа «Пользователь-Группа-Остальные» и как расширяется алгоритм при использовании POSIX ACL. В завершение мы посмотрим возможности нашего крутого файлового менеджера fly-fm, и я поделюсь ещё одной своей утилитой aldpro-setfacl, которая позволяет настраивать права доступа к файлам полностью из графического интерфейса. Кстати, материалы этого рефакторинга вошли в один из модулей нашего открытого курса по ALD Pro, который всего за пару месяцев собрал уже почти 100к просмотров.

Осталось добавить, что данная статья будет полезна даже в том случае, если вы пока ещё используете ванильные версии FreeIPA и Samba.

Ну что, добавим рока в эту скучную самбу! 💃🕺

Картинка, чтобы разбавить сухую теорию

Картинка, чтобы разбавить сухую теорию
А ещё я выступал диджеем на рок-вечеринках, хорошее было время…
  1. Состав и архитектура подсистемы общего доступа к файлам ALD Pro

  2. Настройки файлового сервера Samba

  3. Аутентификация по паролю (NTLM)

  4. Kerberos-аутентификация на файловом сервере Samba

  5. Авторизация на файловом сервере Samba на уровне SMB-подключения

  6. Авторизация на уровне ACL файловой системы

  7. Специфика работы с правами доступа при подключении SMB-ресурса

  8. Настройка ACL в Linux

1. Состав и архитектура подсистемы общего доступа к файлам ALD Pro

В основе службы каталога ALD Pro лежит FreeIPA, а сердцем нашего файлового сервера является служба smbd (Samba), которая обеспечивает доступ к ресурсам по протоколу Server Message Block, SMB. Данный протокол реализует клиент-серверную архитектуру и позволяет предоставить доступ к файлам, которые находятся на удаленных хостах. Но стоит добавить, что протокол SMB — это не только доступ к файлам, так как через общий ресурс IPC$ приложения могут обращаться к именованным каналам, которые позволяют вызывать удаленные процедуры (Remote Procedure Call, RPC) и получать результаты их выполнения. Например, когда мы в Windows открываем свойства папки, чтобы посмотреть список доступа ACL, клиентский компьютер по протоколу SMB обращается к каналу LSARPC на контроллере домена, чтобы с помощью процедуры LookupSids2 преобразовать идентификаторы субъектов безопасности в имена соответствующих пользователей и групп.

История проекта Samba началась, конечно же, с общего доступа к файлам, но, в силу особенностей протокола SMB, в дальнейшем появился доступ к принтерам, и была включена поддержка доменов NT4/AD. С расширением функциональности продукта увеличивалось и количество настроек, поэтому некоторые из них устарели или начали конфликтовать с другими настройками, так как отвечали за несовместимые режимы работы. Поэтому настройка всего этого «разнотравья» является сейчас крайне непростой задачей.

Архитектура подсистемы общего доступа к файлам ALD Pro представлена на следующем рисунке. В качестве основных компонентов Samba можно выделить:

  • smbd – служба, реализующая доступ к ресурсам сервера по протоколу SMB, использует порт 445/TCP. Протокол SMB может работать поверх протокола NetBIOS, для этого служба smbd использует ещё и порт 139/TCP.

  • nmbd – служба, обеспечивающая поддержку сервера имен NetBIOS (NetBIOS Name Server, NBNS), использует порты 137/UDP и 138/UDP.

  • winbind – клиентская часть, которая позволяет Linux-серверу быть участником домена Active Directory. Служба Winbind позволяет выполнять автоматическое обнаружение контроллеров домена (в Windows эта функция называется DC Locator), преобразовывать идентификаторы безопасности Windows (SID) в POSIX-идентификаторы (UID/GID), выполнять исходящую NTLM-аутентификацию. В настоящий момент служба считается устаревшей и часть ее функций, например, преобразование идентификаторов, взяла на себя служба sssd.

  • sssd – клиентская часть, которая позволяет хосту быть участником домена, когда на бэкенде находится служба каталога FreeIPA, Active Directory, MIT Kerberos или даже обычный каталог LDAP v3. На серверах с Samba служба sssd не только берет на себя часть функций winbind, но даже иногда ограничивает возможности последней. Например, разработчики sssd из соображений безопасности принципиально против реализации в своем продукте поддержки протокола NTLM, поэтому при установке winbind вместе с sssd возможность исходящей NTLM-аутентификации становится недоступна.

Осталось только в двух словах упомянуть SMB-клиенты, с помощью которых можно получить доступ к общим папкам файлового сервера. С компьютеров Astra Linux вы можете воспользоваться файловым менеджером, который работает через FUSE, утилитами из пакета cifs-utils, чтобы выполнить подключение вручную командой mount или прописать настройки подключения в fstab. А ещё можно воспользоваться довольно простым, но при этом очень функциональным приложением smbclient.

Архитектура подсистемы общего доступа к файлам ALD Pro 2.4.0

Архитектура подсистемы общего доступа к файлам ALD Pro 2.4.0

2. Настройки файлового сервера Samba

За установку и настройку файлового сервера в ALD Pro отвечает автономная служба aldpro-salt-minion, которая самостоятельно извлекает настройки из LDAP-каталога по pull-модели и выполняет конфигурирование системы. В выборе активного контроллера служба полагается на sssd, забирая результаты дискавера через ответчик ifp (infopipe) по dbus. Аутентификация выполняется по безопасному протоколу Kerberos V5 с помощью ключей хоста из файла /etc/krb5.keytab.

Основным конфигурационным файлом для служб smbd и winbind является /etc/samba/smb.conf. С версии 2.4.0 мы с помощью параметра include стали дополнительно подключать конфигурационный файл /etc/samba/share.conf, чтобы отдельно хранить настройки общих папок, и базу данных /var/lib/samba/registry.tdb, чтобы у системных администраторов была возможность переопределить любой параметр, назначаемый через портал управления:

cat /etc/samba/smb.conf
[global]
...
include = registry
include = /etc/samba/share.conf
...

Отметим также, что реестр в Samba можно подключить ещё двумя способами. Если установить параметр «registry shares = yes», то через реестр можно будет определять только параметры общих папок, а если использовать параметр «config backend = registry», то служба начнет использовать настройки только из реестра и будет игнорировать все остальные параметры конфигурационного файла. Мы, как нам кажется, выбрали наиболее универсальный функциональный вариант.

База данных registry.tdb имеет такую же структуру, как реестр Windows. Параметры Samba хранятся в ветке «/HKEY_LOCAL_MACHINE/SOFTWARE/Samba/smbconf/», а для работы с реестром вместо оснастки regedit.exe нужно использовать приложение samba-regedit. С помощью реестра для общей папки ALD Pro вы можете включить, например, параметр «case sensitive = yes», чтобы работать с ней как обычной Linux-папкой, в которой допустимо хранить объекты с одинаковыми именами «Test» и «test», но в разном регистре символов.

Включение параметра case sensitive для общей папки files через реестр

Включение параметра case sensitive для общей папки files через реестр

Результирующие настройки вы можете увидеть с помощью утилиты testparm. Если добавить ключ -v (verbose), то утилита выведет все параметры, в том числе и те, которые установлены в значении по умолчанию. 

root@pc-1:~# testparm -v
Load smb config files from /etc/samba/smb.conf
...
[test_share]
        case sensitive = Yes
...

3. Аутентификация по паролю (NTLM)

Если подключаться к файловому серверу по IP-адресу или с компьютера, который не является участником домена, то служба smbd попытается выполнить аутентификацию по паролю с использованием протокола NTLMv2, и в сетевом трафике можно будет увидеть пакеты NTLMSSP.

Протокол NTLM предполагает, что есть три участника: клиент, сервер приложения и контроллер домена. Клиент отправляет запрос на сервер и получает в ответ случайное число challenge, которое он должен зашифровать паролем пользователя для подтверждения его аутентичности. Получив от клиента зашифрованное сообщение, сервер пересылает его контроллеру домена вместе с исходным значением challenge, так как не может выполнить проверку аутентичности самостоятельно (серверу неизвестен пароль пользователя). Контроллер домена извлекает пароль пользователя из каталога, выполняет шифрование challenge тем же алгоритмом и сравнивает полученный результат с сообщением от клиента. Если значения совпали, то контроллер сообщит серверу, что проверка аутентичности прошла успешно.

Начиная с версии 2.4.0 мы полностью отказались от NTLM-аутентификации на файловом сервере по нескольким причинам:

  • Во-первых, это просто небезопасно, т.к. протокол NTLM подвержен MITM-атакам.

  • Во-вторых, в качестве клиентской части мы используем на хостах службу sssd, в которой нет поддержки NTLM, поэтому данный метод аутентификации можно обеспечить только в том случае, если переключить файловый сервер в режим контроллера домена NT4 с помощью параметра «security=user» и дать службе smbd прямой доступ к NTLM-хешам пользователей через модуль ipasam с помощью параметра «passdb backend = ipasam:’ldap://dc-1.company.lan:389,ldap://dc-2.company.lan:389,…'». Как вы понимаете, такой подход допустим только в маленьких организациях, если файловым сервером будут управлять те же сотрудники, которые отвечают за администрирование домена.

  • В-третьих, если какие-то LDAP-серверы из списка passdb backend окажутся недоступны, то Samba становится крайне нерасторопной и начинает обижаться большими задержками вплоть до полного отказа в обслуживании.

Учитывая все вышесказанное, на своих файловых серверах мы настраиваем Samba в режиме безопасности ads, т.е. делаем сервер обычным рядовым участником домена, чего и вам желаем:

[global]
...
security = ads
...

Для работы Kerberos-аутентификации на сервере параметра security = ads недостаточно, но об этом будет далее.

4. Kerberos-аутентификация на файловом сервере Samba

Для настройки Kerberos-аутентификации на файловом сервере Samba наши скрипты автоматизации выполняют следующие действия:

  • Создают учетную запись сервиса «krbprincipalname=cifs/fs-1.ald.company.lan@ALD.COMPANY.LAN» в контейнере «cn=services,cn=accounts,dc=ald,dc=company,dc=lan».

  • Выгружают ключи этой учетной записи в keytab-файл /etc/samba/samba.keytab, содержимое которого можно посмотреть с помощью утилиты klist. Ключи нужны службе Samba для расшифровки Kerberos-билетов пользователей.

sudo klist -ket /etc/samba/samba.keytab

Keytab name: FILE:/etc/samba/samba.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
1 10.03.2024 16:38:27 cifs/file-1.ald.company.lan@ALD.COMPANY.LAN (aes256-cts-hmac-sha1-96)
1 10.03.2024 16:38:27 cifs/file-1.ald.company.lan@ALD.COMPANY.LAN (aes128-cts-hmac-sha1-96)
  • Настраивают в конфигурационном файле smb.conf параметры «kerberos method» и «dedicated keytab», чтобы переключить Samba-сервер на Kerberos-аутентификацию:

sudo cat /etc/samba/smb.conf

[global]
...
dedicated keytab file = FILE:/etc/samba/samba.keytab
kerberos method = dedicated keytab
...

Кстати, служба Samba может работать ещё в двух режимах: параметр system keytab настраивает службу на использование системного keytab-файла /etc/krb5.keytab, а параметр secrets only переключает ее на локальную базу secrets.tdb.

Теперь забежим немного вперед и затронем тему авторизации. Несмотря на то, что Kerberos является протоколом аутентификации, в его билетах есть поле Authorization Data, которое позволяет передавать в том числе авторизационную информацию об участии пользователя в группах. Для совместимости с MS Active Directory служба каталога FreeIPA использует так называемый PAC-сертификат (Privilege Attribute Certificate), в котором указан собственный идентификатор пользователя и идентификаторы всех его групп.

При формировании сертификата используются значения атрибута ipaNTSecurityIdentifier, в котором хранится SID в формате MS Windows. Для просмотра PAC-сертификата вы можете воспользоваться утилитой net из пакета samba-common-bin. В следующем примере мы запрашиваем сервисный билет на доступ к службе host/dc-1.ald.company.lan@ALD.COMPANY.LAN для пользователя admin@ALD.COMPANY.LAN и расшифровываем билет с помощью ключей из файла /etc/krb5.keytab. Запускать эту команду следует на хосте dc-1.

admin@dc-1:~$ sudo net ads kerberos pac dump -U admin@ALD.COMPANY.LAN local_service=host/dc-1.ald.company.lan@ALD.COMPANY.LAN --option='kerberos method = dedicated keytab' --option='dedicated keytab file = FILE:/etc/krb5.keytab' -s /dev/null --option='realm = ALD.COMPANY.LAN'

Password for [admin@ALD.COMPANY.LAN]:
The Pac:     pac_data_ctr->pac_data: struct PAC_DATA
...
                                                        rid                      : 0x00000200 (512)
...
                                                        rid                      : 0x000003eb (1003)
...

Значение ipaNTSecurityIdentifier рассчитывается службой каталога FreeIPA «автомагически» в момент создания субъекта безопасности в соответствии с настройками текущего диапазона идентификаторов, за что отвечает плагин sidgen. Сложность этих расчетов состоит в том, что SID-идентификаторы Windows и POSIX-идентификаторы Linux имеют несколько существенных отличий:

  1. В идентификаторе Windows S-1-5-21-1491017894-2377586105-2170988794-500 последнее значение 500 идентифицирует субъект относительно домена (и называется относительным идентификатором RID), а предшествующие ему три числа 1491017894-2377586105-2170988794 предназначены для идентификации домена или компьютера и совпадают для всех пользователей и групп. В POSIX мы имеем дело с обычными целыми числами от 0 до 232 (4 294 967 296), т. е. нет уникальной доменной части, поэтому для идентификации доменов в этом пространстве чисел выделяют просто отдельные диапазоны (т.н. ID Ranges).

  2. В системе Windows пользователи и группы находятся в одном пространстве идентификаторов SID, а в модели POSIX это два разных непересекающихся множества: идентификаторы пользователей называют UID (User Identifier), а идентификаторы групп — GID (Group Identifier). Поэтому пользователь root с идентификатором 0 и его первичная группа root с идентификатором 0 — это два совершенно разных субъекта безопасности. По этой причине в службе каталога FreeIPA диапазоны идентификаторов имеют так называемый вторичный диапазон RID, идентификаторы которого используются для первичных групп пользователей, если при создании пользователя с предопределенным значением идентификатора UID в домене по какой-либо причине уже будет существовать группа с таким же значением идентификатора. Соотношение диапазонов ID Range и DNA ID Range показано на следующем рисунке:

Логика сопоставления идентификаторов

Логика сопоставления идентификаторов

5. Авторизация на файловом сервере Samba на уровне SMB-подключения

Авторизация – это предоставление субъектам доступа к ресурсам на основе разрешений. В случае SMB-сервера ресурсами являются файлы и папки, в роли субъектов выступают пользователи, а разрешения могут быть заданы на уровне SMB-подключения или через списки доступа объектов файловой системы (Access Control Lists, ACL).

Интерфейс Windows для настройки SMB-разрешений отображает шесть флажков, и может показаться, что их допустимо устанавливать в любом сочетании, как показано на нижеследующем рисунке. Однако, если вы кликнете по флажку Allow Full Control, то увидите, что флажки Allow Change и Allow Read будут включены автоматически. То есть мы имеем дело, фактически, с одним выпадающим списком из трех значений, каждое из которых вбирает в себя разрешения предыдущих уровней.

Настройка SMB-разрешений в Windows

Настройка SMB-разрешений в Windows

С флажками Deny ещё интереснее: они точно так же, как флажки Allow, представляют из себя один выпадающий список с тремя значениями. При этом пользователь потеряет право на подключение к общему ресурсу вне зависимости от того, какой из флажков вы установите — Deny Read, Deny Change или Deny Full Control.

В системе Windows разрешения SMB предоставляют следующие права:

Разрешение

Описание

Read
(Чтение)

Даёт право:

⚬ видеть имена файлов и папок;

⚬ читать содержимое и атрибуты файлов;

⚬ иметь доступ к вложенным папкам общего ресурса;

⚬ запускать исполняемые файлы.

Change
(Изменение)

Дополняет предыдущее разрешение следующими правами:

⚬ создавать и удалять файлы и вложенные папки;

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

Full Control
(Полный доступ)

Дополняет предыдущее разрешение следующими правами:

⚬ становиться владельцами файлов и папок;

⚬ изменять списки доступа ACL файловой системы.

Разрешение Full Control имеет смысл только в том случае, если общая папка расположена на томе NTFS, который поддерживает списки доступа.

В службе Samba для настройки SMB-разрешений предназначены две группы параметров:

  • одна группа определяет права на подключение;

  • вторая отвечает за уровень разрешений в рамках установленного подключения.

Права на подключение к общему ресурсу задаются двумя параметрами valid users и invalid users как показано на рисунке «Алгоритм определения прав на подключение к общему ресурсу» ниже.

Параметр

Описание

valid users

Позволяет ограничить доступ к общей папке указанному списку пользователей и групп пользователей. Если параметр не задан, то по умолчанию доступ предоставляется всем пользователям.

Служба Samba может работать с разными источниками групп, порядок обращения к которым задается специальными символами в начале имени группы:

⚬ символ «+» указывает, что это UNIX-группа;

⚬ символ «&» указывает, что это NIS-группа;

⚬ символы «+&» указывают, что сначала нужно выполнить поиск по UNIX-базе, а затем обратиться к базе NIS;

⚬ символы «&+» меняют предыдущий порядок на противоположный;

⚬ символ «@» является краткой записью «&+», то есть указывает, что сначала нужно выполнить поиск по NIS-базе, а затем обратиться к UNIX-базе.

Технология сетевых групп NIS уже устарела, но служба каталога FreeIPA ее поддерживает, и при установке FreeIPA клиента в конфигурационном файле /etc/nsswitch.conf задается значение «nis sss» для базы netgroup. Поэтому, несмотря на то что в интерфейсе ALD Pro управление сетевыми группами не представлено, на файловых серверах мы все же используем символ @ в начале имен групп для обеспечения обратной совместимости.

invalid users

Позволяет запретить доступ к общей папке указанному списку пользователей и групп пользователей. Если пользователь входит сразу в оба списка: и в valid users, и в invalid users, то доступ к общей папке этому пользователю будет запрещён. По умолчанию параметр не задан.

При проверке прав доступа служба smbd конвертирует имена групп в идентификаторы SID и сверяет их с содержимым PAC-сертификата из Kerberos-билета пользователя. Преобразование идентификаторов служба smbd выполняет через службу winbind, но в конечном итоге эту задачу берет на себя служба sssd, которая встраивается в цепочку обработки этих запросов.

Алгоритм определения прав на подключение к общему ресурсу

Алгоритм определения прав на подключение к общему ресурсу

Если по результатам предварительной проверки служба smbd разрешит пользователю установить SMB-подключение, то далее уровень доступа может быть ограничен правами на «чтение» или «запись». Эти права определяются параметрами read list, write list, read only и writable как показано далее на рисунке «Алгоритм определения прав доступа к общему ресурсу».

Параметр

Описание

read list

Определяет список пользователей и групп пользователей, доступ которых будет ограничен правами на чтение. Параметр read list имеет смысл, если пользователям по умолчанию предоставлены права на запись (с помощью параметров «writable = YES» или «read only = NO»). Параметр read list не действует, если пользователя явно включили в write list.

write list

Определяет список пользователей и групп пользователей, которым будет предоставлен доступ «на изменение», т. е. «чтение + запись». Если пользователь через разные группы входит сразу и в read list, и в write list, то этому пользователю будут предоставлены права на изменение.

read only

Определяет уровень доступа «по умолчанию» для пользователей, которые не включены в списки read list и wrtie list. Если параметр не задан, предполагается, что «read only = yes», поэтому пользователи будут ограничены правами на «чтение».

writable или writeable

Параметры writable и writeable являются синонимами, допустимо использовать любое написание. Оба параметра являются инверсией параметру read only, поэтому нет разницы, что вы укажете: «read only = yes» или «writable = no». Если параметры заданы несколько раз, то силу имеет последнее из указанных значений.

Алгоритм определения прав доступа к общему ресурсу

Алгоритм определения прав доступа к общему ресурсу

Учитывая особенность алгоритма, для разграничения прав доступа используют одну из следующих стратегий:

1. Разрешают всем пользователям «чтение» и далее расширяют кому-то из них права до уровня «запись» с помощью write list.

writable = no
write list = editor_user_1 editor_user_2

2. Разрешают всем пользователям «запись» по умолчанию и далее урезают права до уровня «чтение» для определенных пользователей с помощью read list (так сделано в ALD Pro).

writable = yes
read list = reader_user_1 reader_user_2

Схемы предоставления прав доступа Windows и Samba немного отличаются, поэтому можно привести только частичное соответствие:

Права Windows

Права Samba

Allow Read

В настройках общей папки ALD Pro этот уровень доступа называется «Чтение».

Субъект нужно включить в списки:

⚬ valid user;

⚬ read list.

Allow Write

Нет полного соответствия, т. к. добавление пользователя в write list дает ему не только права на запись, но и права на изменение прав доступа к объектам, если он является их владельцем.

Allow Full Control

В настройках общей папки ALD Pro этот уровень доступа называется «Изменение и назначение прав».

Субъект нужно включить в списки:

⚬ valid users;

⚬ write list.

Примечание. Изменение прав доступа будет возможно только из приложения smbclient при подключении по протоколу NT1 и через файловый менеджер Windows. В файловом менеджере fly права доступа можно менять только при прямом обращении к объектам с файлового сервера, а если подключиться к общему ресурсу через SMB, то эта функция будет недоступна.

Deny Read, Deny Write или Deny Full Control

В настройках общей папки ALD Pro этот уровень доступа называется «Доступ запрещён».

Субъект нужно включить в список invalid users.

На файловом сервере Samba есть так же список «admin users», у которого нет полного аналога в Windows. Если пользователь будет администратором общего ресурса, то он сможет действовать в общей папке от имени суперпользователя root в обход ACL файловой системы. В настройках общей папки ALD Pro такой уровень называется «Полный доступ». Но стоит заметить, что для возможности использования прав администратора пользователь должен быть также включен в списки «valid users» и «write list». Ранее для этого уровня доступа мы не добавляли пользователей в «write list», поэтому они могли лишиться полных прав, если становились участником другой группы, которой назначены права «Чтение». Но с версии 2.4.0 мы изменили эту настройку, чтобы поведение системы стало ближе к ожиданиям наших пользователей.

6. Авторизация на уровне ACL файловой системы

Если пользователь не входит в список «admin users», то после установления SMB-подключения его права будут дополнительно ограничиваться настройками списков доступа, которые хранятся в расширенных атрибутах объектов файловой системы.

Служба Samba работает от имени суперпользователя root, поэтому имеет доступ ко всем объектам файловой системы и при обработке запросов от пользователей может имитировать любую модель проверки прав доступа. В настройках общей папки ALD Pro вы можете выбрать один из следующих режимов работы в зависимости от поставленной задачи:

  • POSIX ACL — это штатный режим работы Samba, который не требует подключения каких-либо дополнительных модулей виртуальной файловой системы (Virtual File System, VFS). В этом режиме служба smbd в момент обращения к файловой системе подменяет эффективные идентификаторы пользователя и группы, чтобы делегировать проверку прав доступа функциям операционной системы Linux. Проверка выполняется как обычно с использованием прав RWX (read, write, execute) по модели UGO (user, group, others), которая расширяется списками доступа POSIX. Настраивать права доступа можно напрямую из Linux с использованием файлового менеджера fly-fm.

  • ACL XATTR — в этом режиме мы подключаем vfs-модуль acl_xattr, который позволяет чуть лучше имитировать Windows ACL, используя те же POSIX ACL, но часть информации уже сохраняется в расширенных атрибутах, поэтому уровень совместимости с Linux становится ниже.

  • NFS4 ACLs — в этом режиме мы подключаем vfs-модуль nfs4acl_xattr, который переводит файловый сервер в режим максимальной совместимости с Windows ACL, сохраняя всю необходимую информацию в расширенных атрибутах файлов. Но следует понимать, что данный режим исключает возможность работы с файлами напрямую, и настраивать права доступа можно будет только с Windows-машин.

Мы рекомендуем использовать POSIX ACL, поэтому далее будем рассматривать только этот режим работы.

Настройка общей папки на портале управления ALD Pro

Настройка общей папки на портале управления ALD Pro

Система Linux позаимствовала у UNIX модель дискреционного разграничения доступа UGO (от англ. User — Group — Others, т.е. пользователь — группа — остальные), в соответствии с которой у каждого объекта файловой системы есть три категории пользователей:

  • Пользователь — это пользователь, который считается владельцем объекта. Владелец объекта не только получает права, определенные для этой категории пользователей, но и может изменять права доступа с помощью команды chmod (от англ. change mode). Именно поэтому модель называется дискреционной от лат. discretio — решение должностным лицом какого-либо вопроса по собственному усмотрению. Изменить владельца может только суперпользователь root или другой пользователь, которому назначена привилегия CAP_CHOWN.

  • Группа — это группа, которая тоже считается владельцем объекта, но ее участники не могут изменять права доступа к объекту, им можно только назначить специфичные права доступа. Изменить группу может как суперпользователь root, так и владелец объекта с помощью команды chown (от англ. change owner), но по соображениям безопасности владелец может назначить только ту группу, участником которой является сам.

  • Остальные — это все остальные пользователи, которые не вошли в предыдущие две категории.

Права доступа UGO проверяются строго «слева направо», о чем (к величайшему сожалению) не догадывается подавляющее большинство начинающих Linux-администраторов:

  1. Если пользователь является владельцем объекта, он получает права пользователя, и процедура проверки прав доступа завершается.

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

  3. Если пользователь не является ни владельцем, ни участником группы-владельца, то он получает права, предназначенные для всех остальных пользователей.

Базовый алгоритм определения прав доступа к объекту файловой системы Linux

Базовый алгоритм определения прав доступа к объекту файловой системы Linux

Базовая модель безопасности очень проста, но не обладает достаточной гибкостью, чтобы с ее помощью можно было эффективно решать задачи по организации совместного доступа сотрудников к файлам, поэтому в ядро Linux с оглядкой на Windows была включена поддержка расширенных списков доступа POSIX ACL. Учитывая, что информация о владельцах и правах доступа UGO хранится непосредственно в inode, а списки доступа ACL находятся в расширенных атрибутах, для возможности использования ACL файловая система должна быть смонтирована с поддержкой расширенных атрибутов.

При добавлении POSIX ACL алгоритм немного усложняется, но логика остается прежней, чтобы стандартная проверка UGO была частным случаем, когда POSIX ACL не заданы:

  • Если пользователь является владельцем объекта, он получает права владельца, и процедура завершается.

  • Если пользователь включен в ACL, то он получает права из ACL с учетом маски (если она определена), и процедура завершается. Маска — это специальное правило POSIX ACL, которое определяет максимально допустимые права доступа.

  • Если пользователь является участником группы-владельца и/или одной из групп ACL, то он получает сумму всех этих прав с учетом маски (если она определена), и процедура завершается.

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

Алгоритм определения прав доступа к объекту файловой системы Linux с учетом ACL

Алгоритм определения прав доступа к объекту файловой системы Linux с учетом ACL

Теперь перейдем к разрешениям, которые определяют действия, допустимые по отношению к объектам. В соответствии с базовой моделью безопасности существует три разрешения: чтение (Read), запись (Write) и выполнение (eXecute), значение которых зависит от типа объектов.

  • Применительно к файлам все очень просто:

    • Чтение (r) — дает разрешение на чтение содержимого файла.

    • Запись (w) — разрешает полностью переопределить содержимое файла или добавить новые данные в конец. При этом иметь разрешение на чтение необязательно.

    • Выполнение (x) —разрешает запускать исполняемые файлы. Если файл является скриптом, то для его запуска интерпретатором достаточно, чтобы файл был доступен для чтения. Но чтобы запустить скрипт напрямую по имени ./test.sh, вам потребуется установить на файл флаг execute.

  • Применительно к каталогам все немного сложнее, но можно значительно упростить понимание, если вспомнить, что в Linux папки — это просто специальные файлы, внутри которых записаны ссылки на айноды. Назначение разрешений для каталогов следующее:

    • Чтение (r) — дает разрешение на чтение специального файла каталога, в котором содержится список файлов с номерами айнод. При этом нужно понимать, что этого разрешения недостаточно, чтобы обращаться к айнодам, поэтому посмотреть права доступа к файлам не получится.

    • Запись (w) — имеет силу, только если у пользователя будет разрешение на выполнение, о чем забывают рассказать в подавляющем большинстве источников. Таким образом, разрешение на запись дополняет разрешение на выполнение, позволяя создавать новые записи, переименовывать и удалять уже существующие записи в специальном файле каталога.

    • Выполнение (x) — дает разрешение на вход в папку (cd), чтение метаинформации по дочерним объектам и доступ к ним в соответствии с установленными правами доступа. Другими словами, если у пользователя есть разрешение на чтение дочернего файла, то для того чтобы он смог воспользоваться этим правом, ему нужны разрешения на выполнение для всех вышестоящих каталогов.

Разрешения rwx группируются по три бита в восьмеричное число от 0 до 7, причем биты следуют в обратном порядке:

  • 20 = 1 — Исполнение (execute)

  • 21 = 2 — Запись (write)

  • 22 = 4 — Чтение (read)

Учитывая отличия в файловых системах Windows и Linux, при сохранении файлов c Windows-компьютеров сервер Samba по умолчанию пытается сопоставлять DOS-атрибуты с флагами UGO, что приводит к неожиданному появлению флагов eXecute на файлах и снижает совместимость с Linux. Для того чтобы у нас оставалась возможность предоставить доступ к файлам Linux-пользователям напрямую, мы отключаем такое сопоставление для всех общих папок с помощью параметра «map archive = no». Если вам потребуется включить это сопоставление, вы можете сделать это с помощью ключа в реестре Samba.

Сопоставление DOS-атрибутов на разрешения Linux

Сопоставление DOS-атрибутов на разрешения Linux

Ещё одним крайне важным аспектом в части авторизации на уровне ACL являются права доступа для новых файлов и папок, создаваемых на файловом сервере. С версии 2.4.0 мы позволяем управлять этими настройками с помощью следующих параметров:

  • «force create mode» и «force directory mode» — позволяют повысить права доступа, которые устанавливаются на новые объекты файловой системы, до уровня 0777. Эти значения будут складываться с помощью логического ИЛИ с правами доступа по умолчанию, которые для каталогов  устанавливаются на уровне 0755 (rwx r-x r-x), а для файлов 0644 (rw- r— r—). Обратите внимание, что ведущий ноль в этих числах означает, что это просто число в восьмеричной системе счисления.

  • inherit permissions — позволяет переопределять предыдущие два параметра, устанавливая наследование прав от родительского каталога.

Мы рекомендуем управлять правами с помощью ACL, поэтому на уровне настроек общей папки для каталогов можно установить права 0770, для файлов 0660 и отключить наследование разрешений:

[test_share]
force directory mode = 0770
force create mode  = 0660
inherit permissions = no

Тогда на уровне ACL на папки отделов вам нужно будет установить права, как на нижеследующем скриншоте:

Настройка прав доступа на папку отдела с помощью ACL

Настройка прав доступа на папку отдела с помощью ACL

7. Специфика работы с правами доступа при подключении SMB-ресурса

Общий ресурс можно подключить, например, средствами FUSE в пространстве пользователя. Если требуется временный доступ, то в адресной строке можно просто вбить адрес smb://file-1.ald.company.lan/test_share, где:

  • smb — указывает на SMB-протокол;

  • file-1.ald.company.lan — полное имя файлового сервера;

  • test-share — имя общего ресурса для подключения.

Если вм нужно будет обеспечить постоянный доступ к ресурсу, то в меню «Сеть» можно выполнить команду «Новое сетевое место…» и создать именованное подключение. В открывшемся окне нужно задать имя ресурса и его адрес.

Создание сетевого подключения во fly-fm

Создание сетевого подключения во fly-fm

Ещё можно выполнить монтирование сетевого ресурса с помощью библиотеки cifs-utils из командной строки:

sudo apt install cifs-utils
sudo mount -t cifs -o sec=krb5,cruid=$USER,uid=$UID,gid=$GROUPS,file_mode=0770,dir_mode=0770 //file-1.ald.company.lan/test-share /home/admin/test-share/

где:

  • sudo – команду нужно вызывать из-под sudo, чтобы команда была выполнена с повышенными привилегиями, но в переменных $USER, $UID и $GROUPS были данные из переменных окружения текущего пользователя.

  • -t – параметр определяет тип файловой системы.

  • -o — ключ позволяет задать набор опций для подключения общей папки.

    • sec=krb5 — определяет, что при подключении к серверу клиент должен будет использовать аутентификацию по протоколу Kerberos V5 без цифровых подписей (англ. integrity). Подписи не требуются, т.к. сервер будет требовать шифрование.

    • cruid=$USER — определяет владельца учетных данных Kerberos (credentials uid). При монтировании папки из-под sudo эффективный UID подменяется на 0 (root), поэтому данный параметр нужно задать явно cruid=my_user, либо использовать переменную окружения $USER, которая при выполнении команд из-под sudo не изменяет своего значения и продолжает хранить имя текущего пользователя.

    • uid, gid, file_mode и dir_mode — определяют владельцев и дискреционные права доступа, под которыми файлы и папки должны быть смонтированы в файловой системе. Служба cifsd по умолчанию использует эффективные идентификаторы процесса, который ее запустил, поэтому при монтировании из-под sudo значения uid/gid нужно задать явно.

  • //file-1.ald.company.lan/test-share — путь к общей папке на файловом сервере.

  • /home/admin/test-share — точка монтирования. Этот каталог должен существовать на момент подключения сетевого ресурса.

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

#общая папка                           точка монтирования              тип    параметры
//file-1.ald.company.lan/test-share    /home/admin/test-share          cifs   user,noauto,sec=krb5,file_mode=0770,dir_mode=0770

Где:

  • noauto — параметр указывает, что диск не требуется монтировать автоматически при загрузке системы.

  • user — параметр указывает, что монтировать папку cможет обычный пользователь без прав суперпользователя. Есть также параметр multiuser, который позволяет использовать одну и ту же точку монтирования для нескольких пользователей сразу. В этом случае SMB-клиент создает одно общее подключение, а файловый сервер Samba авторизует входящие запросы, в зависимости от того, от какого из пользователей они поступают.

Вне зависимости от способа подключения общего ресурса работа с ним будет существенно отличаться от работы с файлами в проводнике Windows или при локальном обращении к файлам, так как вы будете видеть не те дискреционные права доступа, которые заданы на файловом сервере, а те значения, под которыми этот общий ресурс примонтирован на текущем хосте. В Linux для SMBv1, конечно, была реализована поддержка получения дискреционных прав доступа с сервера, но этот протокол использовать небезопасно, поэтому придется немного подождать поддержки этого механизма для SMBv3.

8. Настройка ACL в Linux

Сложность настройки списков доступа в Linux заключается в том, что подавляющее большинство файловых менеджеров позволяет редактировать только базовые права UGO, и для настройки ACL приходится обращаться к утилитам getfacl и setfacl, что довольно непросто, даже когда четко понимаешь, что именно нужно настроить. Операционная система Astra Linux в этом смысле является приятным исключением, т.к. ее файловый менеджер fly-fm позволяет настроить все, что нужно, полностью из графики.

Единственный момент — при добавлении новых субъектов в ACL приложение позволяет выполнить поиск только по тем записям, которые могут быть перечислены с помощью стандартных функций операционной системы, а в настройках sssd эта функция по умолчанию отключена. Конечно, никто не мешает включить параметр «enumerate = true», но такой способ подойдет только для очень небольших организаций, в которых не более тысячи сотрудников, т.к. загрузка всех пользователей из домена в локальный кеш будет создавать большие задержки в работе системы. Мы уже договорились с разработчиками операционной системы, чтобы они реализовали возможность прямого поиска в LDAP-каталоге без использования enumerate, но пока эти изменения ещё не появились в составе ОС, мы создали для своих заказчиков вспомогательную утилиту aldpro-setfacl, в разработке которой принял участие и ваш покорный слуга.

Утилита aldpro-setfacl встраивается в файловый менеджер через меню «Действия», позволяет выполнить поиск субъектов в домене, добавить их в ACL и перейти к настройке прав доступа. Уже совсем скоро deb-пакет с этим приложением можно будет загрузить из личного кабинета, а в дальнейшем мы обязательно включим его в состав нашего официального репозитория. Буду крайне признателен за любую обратную связь.

Уверен, что вам понравятся нововведения, которые мы реализовали в версии 2.4.0, а если ещё и статья приглянется, то обязательно не забудьте оставить за неё свой голос )))

Демонстрация работы утилиты aldpro-setfacl

Демонстрация работы утилиты aldpro-setfacl

В  качестве финального аккорда приведу примеры основных конфигурационных файлов Samba-сервера из поставки ALD Pro 2.4.0. 

/etc/samba/smb.conf

[global]
workgroup = ALD
realm = ALD.COMPANY.LAN
dedicated keytab file = FILE:/etc/samba/samba.keytab
kerberos method = dedicated keytab
security = ads
idmap config ALD : range = 1584000000-1584199999
idmap config ALD : backend = sss
idmap config * : range = 0-0
idmap config * : backend = tdb
restrict anonymous = 2
usershare allow guests = no
log file = /var/log/samba/log.%m
include = registry
include = /etc/samba/share.conf

[homes]
browsable = yes
writable = yes
create mask = 0600
directory mask = 0700
valid users = %S
read only = No

/etc/samba/share.conf

[test_share]
path = /opt/samba_shares/test_share
force directory mode = 0770
force create mode  = 0660
writable = yes
map archive = no
valid users = @employees
invalid users =
read list =
write list = @employees
admin users =

/etc/sssd/sssd.conf

[domain/ald.company.lan]
use_fully_qualified_names = False
id_provider = ipa
ipa_server = _srv_, dc-1.ald.company.lan
ipa_domain = ald.company.lan
ipa_hostname = file-1.ald.company.lan
auth_provider = ipa
chpass_provider = ipa
access_provider = ipa
cache_credentials = True
ldap_tls_cacert = /etc/ipa/ca.crt
krb5_store_password_if_offline = True

[sssd]
services = ifp
domains = ald.company.lan

[nss]
homedir_substring = /home

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[ifp]
allowed_uids = 0, 33, 114, fly-dm, ipaapi

[secrets]

[session_recording]

/etc/nsswitch.conf

passwd:         files sss
group:          files sss
shadow:         files sss
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
sudoers:        files sss

automount:      sss

Samba — это свободная реализация протокола SMB/CIFS, который обеспечивает возможность обмена файлами и печатными ресурсами между компьютерами в локальной сети. Samba работает на операционных системах Linux и других UNIX-подобных системах, позволяя им взаимодействовать с компьютерами под управлением операционных систем Windows.

Samba позволяет создавать файловые и печатные ресурсы на сервере Linux и сделать их доступными для клиентов Windows. Также Samba позволяет настроить аутентификацию пользователей и управление доступом к ресурсам на основе учетных записей, созданных в системе Linux. Кроме того, Samba поддерживает множество дополнительных функций, таких как автоматическое монтирование сетевых ресурсов, синхронизация файлов и папок, и др.

Что такое Samba?

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

Samba Linux — это мощное и удобное средство для обмена файлами и печатными ресурсами в локальной сети. Ниже перечислены некоторые из основных преимуществ Samba Linux:

Совместимость: обеспечивает совместимость между различными операционными системами, включая Windows, Linux, macOS и другие, что позволяет обмениваться файлами и печатными ресурсами между компьютерами под управлением различных ОС.

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

Удобство использования: предоставляет простой и понятный интерфейс для настройки и управления сетевыми ресурсами. Это делает Samba Linux очень удобным и простым в использовании.

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

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

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

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Синий экран смерти windows 10 corruption
  • Быстрая загрузка windows 10 нужна ли
  • Драйвер адаптера проводной сети для windows 10
  • Wolfenstein the new order не запускается на windows 10
  • Диск с игрой не запускается на windows 10