Windows настройка samba сервера

Все способы:

  • Шаг 1: Активация компонента
  • Шаг 2: Проверка и настройка
    • Вариант 1: Клиент
    • Вариант 2: Сервер
  • Шаг 3: Подключение
  • Вопросы и ответы: 2

Шаг 1: Активация компонента

По умолчанию компонент, отвечающий за работу службы Samba (SMB), отключен в Windows 10, поэтому перед настройкой его следует активировать. Делается это в специальном меню «Панели управления». Достаточно будет открыть окно «Компоненты Windows» и установить отметку напротив пункта «Поддержка общего доступа к файлам SMB 1.0/CIFS». В завершение следует перезапустить компьютер, чтобы внесенные изменения зарегистрировались в системе. При надобности обратитесь за помощью к тематической статье на нашем сайте — в ней автор описал эту процедуру более подробно. Там же вы сможете найти альтернативные методы выполнения поставленной задачи. Для ознакомления с темой перейдите по ссылке ниже.

Подробнее: Как включить SMBv1 в Windows 10

настройка smb в windows 10_01

Шаг 2: Проверка и настройка

После того как компонент «Поддержка общего доступа к файлам SMB 1.0/CIFS» будет включен, необходимо проверить его работу и выполнить запуск. Для клиентской и серверной части эти действия выполняются по-разному. Подробнее о них будет рассказано дальше по тексту.

Вариант 1: Клиент

Если вы собираетесь настроить клиентскую часть SMB, запустите оболочку «Windows PowerShell» от имени администратора и выполните несколько команд. Делается это следующим образом:

  1. Запустите оболочку любым доступным способом. Например, сделать это можно посредством поиска по системе. Установите курсор в соответствующее поле на панели задач, введите запрос «Windows PowerShell» и в результате щелкните по пункту «Запуск от имени администратора».
    настройка smb в windows 10_02

    Читайте также: Как открыть Windows PowerShell в Windows 10

  2. При появлении диалогового окна контроля учетных записей щелкните по кнопке «Да», чтобы разрешить запуск оболочки.
  3. настройка smb в windows 10_03

  4. В появившееся окно «Windows PowerShell» вставьте команду sc.exe qc lanmanworkstation и нажмите Enter для ее выполнения.

    В результате появится информация, касающаяся клиентской части службы SMB. Здесь вам необходимо обратить внимание на строку «Зависимости». Важно, чтобы в списке была указана службы под названием «MRxSmb20». Если она есть, значит, все нормально и клиент Samba настроен правильно.

  5. настройка smb в windows 10_04

  6. Если в списке «MRxSmb20» отсутствует, следует вручную включить эту службу. Сделать это можно посредством редактирования системного реестра или путем ввода специальных команд в «Windows PowerShell». Во втором случае воспользуйтесь приведенными ниже командами. Поочередно вставьте их в консоль и нажмите по клавише Enter для выполнения.

    sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
    sc.exe config mrxsmb10 start= auto

    настройка smb в windows 10_05

    Если после ввода команд на экране появлялось сообщение «[SC] ChangeServiceConfig: успех», значит, вы все выполнили верно и клиентская часть Samba полностью настроена.

Вариант 2: Сервер

Серверная часть SMB настраивается похожим образом, но прежде следует проверить ее статус посредством специальной команды, приведенной ниже. Откройте «Windows PowerShell» от имени администратора, как это было показано ранее, а затем выполните команду.

PowerShell Get-SmbServerConfiguration | Select EnableSMB1Protocol

настройка smb в windows 10_06

Наличие в столбце «EnableSMB1Protocol» значения «True» означает, что сервер настроен корректно и готов к работе. В противном случае вам необходимо выполнить настройку вручную. Для этого сделайте следующие действия:

  1. Впишите в «Windows PowerShell» команду Set-SmbServerConfiguration -EnableSMB1Protocol $true и нажмите Enter, чтобы ее выполнить.
    настройка smb в windows 10_07

    При появлении запроса подтверждения впишите символ «Y» (без кавычек) и нажмите по клавише Enter. Это нужно для завершения выполнения команды.

  2. После этого окно консоли вы можете закрыть, оставшиеся действия выполняются в «Редакторе реестра». Откройте его через системный поиск или утилиту «Выполнить», вызываемую сочетанием клавиш Win + R. Вставьте в поле «Открыть» команду regedit и кликните по кнопке «ОК».
    настройка smb в windows 10_08

    При появлении диалогового окна контроля учетных записей кликните по кнопке «Да», чтобы разрешить запуск «Редактора реестра».

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

  4. настройка smb в windows 10_10

  5. Находясь в целевой директории, найдите в ней параметр под названием «SMB1» и откройте его свойства. Для этого щелкните по нему правой кнопкой мыши и из появившегося контекстного меню выберите пункт «Изменить».
  6. настройка smb в windows 10_11

  7. В поле «Значение» введите цифру «1» (без кавычек) и нажмите по кнопке «ОК», чтобы сохранить внесенные изменения.

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

Шаг 3: Подключение

Теперь, когда служба SMB настроена, можно непосредственно пробовать подключаться к серверу. Делается это стандартным способом через меню сетевого диска. Открыть его вы можете через файловый менеджер «Проводник». По итогу вам нужно будет присвоить букву новому диску, ввести адрес сервера Samba и нажать на «Готово». Подробнее об этом рассказывается в другой статье на нашем сайте. Ознакомиться с ее содержанием вы можете посредством следующей ссылки.

Подробнее: Как подключить сетевой диск в Windows 10

настройка smb в windows 10_13

Читайте также: Что делать, если не удается подключить сетевой диск в Windows 10

Наша группа в TelegramПолезные советы и помощь

Samba — это бесплатное программное обеспечение, которое обеспечивает взаимодействие между системами Linux/Unix и Windows, позволяя создавать файловые и печатные серверы. Установка сервера Samba на Windows Server 2019 полезна, когда необходимо предоставить доступ к файлам и папкам на сервере с другого сервера на Windows Server 2019. В этой статье мы предоставим шаги по установке сервера Samba на Windows Server 2019 через Server Manager и подключению к нему с другого сервера на Windows Server 2019.

Шаг 1: Установка сервера Samba на Windows Server 2019

Чтобы установить сервер Samba на Windows Server 2019, выполните следующие действия:

Запустите Server Manager и нажмите «Добавить роли и компоненты».

Нажмите «Далее» до страницы «Роли сервера».

Выберите «Сервисы файлов и хранилищ» и нажмите «Далее».

Выберите «Сервисы файлов и iSCSI» и нажмите «Далее».

Если они не выбраны, выберите «Сервер для NFS» и «Поддержка SMB 1.0/CIFS для обмена файлами» и нажмите «Далее».

Нажмите «Установить», чтобы установить выбранные роли и компоненты.

После завершения установки перезагрузите сервер.

Шаг 2: Настройка сервера Samba на Windows Server 2019

​​​​​​​

После установки сервера Samba выполните следующие действия для его настройки:

Откройте Server Manager и выберите «File and Storage Services».

Выберите «SMB Server» и в окне настройки выберите «Create a fale share, start  the new SMB share» и введите имя разделяемой папки.

Выберите SMB hare — Quick

Укажите папку, которую вы хотите разделить.

Нажмите «Далее» и выберите имя папки.

Проверьте настройки и нажмите «Создать».

Перезагрузите сервер.

Шаг 3: Подключение к серверу Samba с другого сервера на Windows Server 2019

После установки и настройки сервера Samba на Windows Server 2019 выполните следующие действия, чтобы подключиться к нему с другого сервера на Windows Server 2019:

  1. На сервере, с которого вы хотите подключиться к серверу Samba, откройте проводник Windows и выберите «Этот компьютер».

  2. Нажмите «Сеть» в левой панели, чтобы открыть доступные сетевые ресурсы.

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

  4. Выберите нужную папку и нажмите «Подключиться», чтобы подключиться к серверу Samba.

  5. Введите имя пользователя и пароль для доступа к папке, если это необходимо.

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

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

Также предлагаем рассмотреть другие полезные статьи:

  • Как попасть в phpMyAdmin из популярных панелей управления сервером
  • Как поднять OpenSSH на Windows 2012
  • Как поднять Samba сервер на Linux и подключиться к нему из Windows Server 2019

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

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

Ещё в далёких нулевых, когда трава была зеленее, солнце теплее, а санкций не было даже в проекте, я учился в университете и ходил на курсы администрирования 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

Инсталляция и тестирование Samba

Где взять

Конфигурирование Samba

Запуск демонов

Простой тест

Основная настройка smb.conf

Используем текстовый интерфейс

Используем SWAT

Детальная настройка

   Файловый сервер под Linux

   Доступ к дискам Windows из Linux

Заключение

Введение

В общей структуре
корпоративных сетей Microsoft Windows и Linux
зачастую существуют как разобщенные миры.
Попытки обеспечить «прозрачный»
доступ сетевых клиентов Windows к ресурсам UNIX зачастую порождают
множество проблем. Одним из способов,
позволяющих их решить, является
использование в UNIX/Linux
протокола Server Message Block (SMB — Samba),
который иногда также называется протоколом
Session Message Block (SMB), протоколом NetBIOS или
протоколом LanManager. Этот протокол не является
разработкой Microsoft,
однако он хорошо адаптирован
для использования в сетях на основе Windows. Хотя эта статья и посвящена Linux,
тем не менее Samba может работать на
большинстве UNIX-подобных
операционных систем. И еще одно замечание: в данной
статье мы рассмотрим пакет SMB
с точки зрения малого предприятия, которому
нужен локальный файл- или принт-сервер, либо
домашнего пользователя, имеющего
несколько компьютеров и желающего,
чтобы машины совместно использовали
ресурсы. Поэтому даже начинающий
администратор UNIX/Linux может принять эту статью как
руководство к действию.

Что умеет Samba

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

Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации
доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell
(Andrew.Tridgell@anu.edu.au),
UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам
для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad (pke@engstad.ingok.hitos.no)
и Volker Lendecke (lendecke@namu01.gwdg.de),
дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах
с Windows или Samba.

C помощью Samba можно реализовать следующие наиболее распространенные:

  1. Давать доступ к дискам Linux Windows-машинам.
  2. Получать доступ к дискам Windows для машин под Linux.
  3. Давать доступ к принтерам Linux для Windows-машин.
  4. Получать доступ к принтерам Windows из Linux-систем.

Далее в статье будет
дано подробное описание того, как это все
реализовать.

Инсталляция и тестирование Samba

Инсталляцию, как известно, следует начинать с подробного изучения документации.
Правда, большинство системных администраторов пренебрегают этим правилом, руководствуясь
другим: «Если уже ничего не помогает, почитайте документацию». В общем, советуем
начать инсталляцию Samba с простой команды: $ man samba (рис.
1).

А также c чтения документации, доступной на сайте http://www.samba.org/.
Следует отметить, что для использования Samba ваша машина должна находиться
в одиночном Ethernet-сегменте локальной сети, при этом используя протокол TCP/IP.
Samba не будет работать при использовании других сетевых протоколов. Это, в
принципе, легко, поскольку Linux и Windows 95/98/NT поставляются с поддержкой
TCP/IP. Однако если вы используете машины с Windows 3.x, то вам необходимо добавить
поддержку TCP/IP.

Где взять

Для того чтобы получить исходные тексты последней версии Samba, свяжитесь с
сайтом http://www.samba.org/
и выберите ближайший к вам сервер-зеркало: ftp://ftp.samba.org/. Пакет Samba
входит в состав дистрибутивов ряда UNIX/Linux-систем, например Rad Hat или Suse
Linux. Внимательно изучите документацию вашего Linux, и, вполне возможно, что
вам будет достаточно только вставить CD и инсталлировать пакеты Samba. В этом
случае вы можете продолжать чтение статьи со следующей главы.

После получения
данного пакета извлекаем все то, что
находится под «грифом» *.tar.gz,
например, в директорию /tmp
(причем для этого не обязательно быть root’ом
:), то есть:

$ tar -zxvf samba-latest.tar.gz  

Если у вас не возникло
никаких проблем при извлечении данного
пакета, вы обнаружите новую директорию,
например samba-latest,
и в ней извлеченные файлы. Перейдите в нее,
загляните в файлы «README» и «Manifest»
— инструкция по инсталляции находится в
последнем файле и выглядит примерно так:

$ ./configure  
$ make  
$ su  
# make install  

Теперь надо обратить
внимание на то, где находятся ваши файлы
конфигурации. Большинство дистрибутивов Samba
по умолчанию помещает их в директорию /etc,
а себя — в директорию /usr/local/samba.

Конфигурирование Samba

Основная информация о
конфигурации Samba
находится в файле smb.conf.
С этим файлом следует обращаться осторожно.
Если вы планируете каким-либо образом
изменить работающую версию, обязательно
сделайте копию.

Для того чтобы первый
раз запустить сервер, необходимо иметь
рабочую версию файла smb.conf. Перейдите в директорию, в
которой должен находиться ваш
конфигурационный файл. Скорее всего это
будет /etc или
/usr/local/samba/lib.
Сделайте копию данного файла, например smb.old,
— это возможно при наличии прав root.
Теперь, когда у вас есть «чистый» файл,
можно ввести самую простую конфигурацию, то
есть набрать следующие строки:

#Basic Samba configuration file (smb.conf)  
[global]  
workgroup = PTO  
netbios name = GALKA  

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

Запуск демонов

Имеется два демона SMB: /usr/sbin/smbd
и /usr/sbin/nmbd. Вы можете запустить демоны Samba из
inetd или как автономный процесс. Samba будет
отвечать чуть быстрее в случае, если она
запущена как автономный процесс.

Иногда
бывает необходимо проверить наличие в
файле /etc/services примерно таких строк:

netbios-ns            137/tcp                      nbns  
netbios-ns            137/udp                      nbns  
netbios-dgm           138/tcp                      nbdgm  
netbios-dgm           138/udp                      nbdgm  
netbios-ssn           139/tcp                      nbssn  

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

Для запуска демонов из
inetd поместите следующие строки в
конфигурационный файл inetd, /etc/inetd.conf:

# SAMBA NetBIOS services (for PC file and print sharing)  
    netbios-ssn            stream            tcp            nowait               root            /usr/sbin/smbd smbd  
    netbios-ns             dgram             udp            wait                 root            /usr/sbin/nmbd nmbd  

Затем перезапустите
демон inetd, выполнив команду:

kill -HUP 1 `cat /var/run/inetd.pid`  

Для запуска демонов из
системных стартовых скриптов поместите
следующий скрипт в файл /etc/rc.d/init.d/smb (для
дистрибутива RedHat) или /etc/rc.d
(для дистрибутива Suse
Linux) и
создайте на него символические ссылки с
именами вида /etc/rc.d/rcX.d/S91smb
(запускает сервисы SMB в
многопользовательском режиме), /etc/rc.d/rcX.d/K91smb (убивает сервисы SMB при
выключении), /etc/rc.d/rc6.d/K91smb (убивает сервисы SMB
при перезагрузке), где X
— номер загрузочного уровня системы,
обычно это цифра 2 или 3.

#! /bin/sh  
. /etc/rc.config  
# Determine the base and follow a runlevel link name.  
base=${0##*/}  
link=${base#*[SK][0-9][0-9]}  
# Force execution if not called by a runlevel directory.  
test $link = $base && START_SMB=yes  
test "$START_SMB" = "yes" || exit 0  
# The echo return value for success (defined in /etc/rc.config).  
return=$rc_done  
case "$1" in  
    start)  
        echo -n "Starting SMB services:"  
        startproc /usr/sbin/nmbd -D || return=$rc_failed  
        startproc /usr/sbin/smbd -D || return=$rc_failed  
        echo -e "$return"  
        ;;  
    startd)  
        echo -n "Starting SMB services:"  
        startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed  
        startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed  
        echo -e "$return"  
        ;;  
    stop)  
        echo -n "Shutting down SMB services:"  
        killproc -TERM /usr/sbin/nmbd || return=$rc_failed  
        killproc -TERM /usr/sbin/smbd || return=$rc_failed  
        echo -e "$return"  
        ;;  
    restart|reload)  
            $0 stop  &&  $0 start  ||  return=$rc_failed  
            ;;  
    status)  
            echo -n "Checking for service smb: "  
            checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process "  
            checkproc /usr/sbin/smbd && echo "OK " || echo "No process"  
            ;;  
    *)  
        echo "Usage: $0 {start|stop|restart|reload|status}"  
        exit 1  
esac  
# Inform the caller not only verbosely and set an exit status.  
test "$return" = "$rc_done" || exit 1  
exit 0  

Если при старте Samba вы
получаете сообщение, в котором говорится,
что демон не может подключиться к порту 139,
то скорее всего у вас уже есть запущенные
процессы Samba, которые не были завершены.
Посмотрите список процессов (используя
команду ‘ps ax | grep mbd’) для того, чтобы
определить, есть ли еще запущенные сервисы
Samba. Если же демоны отказываются
запускаться по каким-либо другим причинам,
то вероятнее всего этот скрипт не подходит
к вашему UNIX/Linux
и вам придется еще раз покопаться в
документации, что-то в нем поправить, а
может быть, и переписать.

Простой тест

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

# smbclient -L localhost  

Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто нажать
Enter. Вот какие строчки должны появиться на мониторе (рис.
2).

Основная настройка smb.conf

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

Каждый раздел файла
начинается с заголовка раздела, такого как [global], 
[homes], [printers]
и т.п.

Секция [global] определяет некоторые переменные,
которые Samba будет использовать для
определения доступа ко всем ресурсам.
Раздел [homes] позволяет удаленным
пользователям иметь доступ к своим (и
только своим) домашним директориям на
локальной Linux-машине. Так что если
пользователи Windows попытаются подключиться
к этому разделу со своих Windows-машин, то они
будут соединены собственными домашними
директориями. Заметим, что для
этого они должны быть зарегистрированы
на Linux-машине.

Используем текстовый интерфейс

Многие системные
администраторы при инсталляции Linux
ограничиваются только текстовым
интерфейсом, не устанавливая графический (X
Windows).
Это положительно сказывается на
безопасности и быстродействии системы, но
делает недоступными утилиты вроде SWAT,
работе с которой посвящена нижеследующая
часть этой статьи.

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

; /etc/smb.conf  
;  
; Убедитесь и перезапустите сервер после внесения изменений в этот  
; файл, например:  
; /etc/rc.d/smb stop  
; /etc/rc.d/smb start  
[global]  
; Раскомментируйте эту строку, если вы хотите дать доступ пользователю "гость"  
; guest account = nobody  
   log file = /var/log/samba-log.%m  
   lock directory = /var/lock/samba  
   share modes = yes  
[homes]  
   comment = Home Directories  
   browseable = no  
   read only = no  
   create mode = 0750  

Написав новый файл
smb.conf, полезно проверить его правильность.
Для этого можно использовать утилиту ‘testparm’
(предварительно заглянув на справочную
страницу testparm); если testparm сообщает об
отсутствии проблем, то smbd правильно
загрузит файл настроек.

Имейте в виду: если ваш
сервер Samba имеет больше одного Ethernet-интерфейса,
то smbd может подключиться к неправильному.
Чтобы заставить ее подключаться к нужному,
можно добавить в раздел [global] файла /etc/smb.conf
следующую строку:

interfaces = 192.168.1.1/24  

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

Если говорить о
безопасности SAMBA, то следует учесть, что она
использует порты 137-139. Есть смысл просто
заблокировать их из TCP и UDP. В случае если у
вас стоит ядро версии 2.0 (это можно легко
узнать, набрав в консоли uname -a), то для
фильтрации используйте ipfwadm,
а если ядро версии 2.1 или 2.2, — то ipchains.

Вот как
это делается с помощью ipfwadm:

# Добавляем нижеприведенные записи  
в /etc/rc.local:   
ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0   
ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0  
ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0  
ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0  

Это запретит (deny) все
входящие и исходящие TCP- и UDP-пакеты для
портов 137-139 на интерфейсе eth0. Для получения
более подробной информации рекомендуем
почитать man ipfwadm.

При наличии ядер 2.1-2.2
вы сможете сделать это с помощью ipchains:

# Добавляем нижеприведенные записи в /etc/rc.local:   
ipchains -A input -p tcp -j DENY --destination-port 137:139 -i eth0  
ipchains -A input -p udp -j DENY --destination-port 137:139 -i eth0  
ipchains -A output -p tcp -j DENY --destination-port 137:139 -i eth0  
ipchains -A output -p udp -j DENY --destination-port 137:139 -i eth0  

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

Однако если вам не
нравится редактировать конфигурационные
файлы вручную и на вашем Linux-сервере установлен графический
интерфейс, то вы можете упростить настройку
smb.conf,
воспользовавшись Samba Web Administration Tool (SWAT).

Используем SWAT

Для использования SWAT
проверим два конфигурационных файла: services (/etc/services)
и inetd.conf (/etc/inetd.conf).

По умолчанию SWAT
запускается с 901-го порта, но при желании это
можно изменить. Итак, проверяем
вышеуказанные конфигурационные файлы:

>/etc/service  
swat 901/tcp                 # в данном случае SWAT-service  используется через inetd  

Если эта строка
присутствует в /etc/service, то все нормально.
Если строки нет, добавьте ее в конец файла.
Данная строка говорит нам о том, что SWAT
запускается на 901-м порте.

Теперь в файл inetd.conf (/etc/inetd.conf)
добавляем следующую строку:

swat                stream           tcp                nowait.400                     root                /usr/sbin/swat swat  

Затем перезапустим inetd:

# killall -HUP inetd  

Далее в браузере
набираем:

http://192.168.0.1:901  

В случае если все
настроено правильно, вы увидите форму, в
которой нужно ввести имя пользователя (username)
и пароль (password). Здесь введите имя и пароль
пользователя «root».

Итак, SWAT запущен.
Теперь можно ознакомиться с его работой.
Как вы видите, SWAT — это программа с
прекрасным интерфейсом, которая создает
конфигурационный файл /etc/smb.conf.

Детальная настройка

Файловый сервер под Linux

Как показано выше, 
организация доступа к дискам Linux для
пользователей Windows с помощью файла smb.conf
является довольно простым делом. Однако Samba
позволит вам в большой степени
контролировать этот процесс. Приведем
несколько примеров.

Для
организации доступа для всех добавьте в smb.conf
следующие строчки:

[public]  
   comment = Public Stuff  
   path = /home/public  
   public = yes  
   writable = yes  
   printable = no  

Вы получили
возможность запустить Samba
и просмотреть доступные ресурсы с
компьютера под управлением Windows. Однако все может оказаться не
так-то просто. Начиная с Windows NT 4 в
операционных системах Microsoft, в том числе и в
среде Windows 98 (начиная с NT
Service
Pack 3),
происходит передача закодированных
паролей по сети.  Вы
непременно столкнетесь с этой проблемой,
если версия пакета Samba, установленная на
вашем UNIX/Linux-сервере, ниже 2.0.5а и не
поддерживает закодированные пароли.

В случае несоответствия
типов паролей между клиентом и сервером при
попытках подключиться к ресурсу в окне
диалога будет указано примерно следующее: «You
are not authorized to access that account
from
this
machine».

Подобную проблему
можно решить двумя путями. Во-первых, можно
настроить Samba-сервер для использования
шифрованных паролей.  Во-вторых,
заставить Windows работать с нешифрованными
паролями SMB. Если это Windows
98, то последовательность ваших действий
должна быть такова: используя редактор registry
(regedit), создайте ключ registry:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP  

Добавьте значение
типа DWORD:

Имя значения: EnablePlainTextPassword
Данные: 0x01.

Для Windows NT
эта же последовательность действий
выглядит так:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters  

Добавьте значение
типа DWORD:

Имя значения: EnablePlainTextPassword
Значение: 0x01.

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

Однако следует иметь в
виду, что передача по сети незашифрованных
паролей всегда наносит ощутимый удар по
системе безопасности, поэтому, если есть
возможность, лучше настроить Sambа
для использования шифрованных паролей. Для
этого в раздел [global] файла /etc/smb.conf добавьте
следующие строки:

encrypt passwords = yes  
smb passwd file = /etc/smbpasswd  

При использовании
вашими клиентами и вашим сервером
шифрованных паролей вы не сможете
просмотреть списки доступных ресурсов до
тех пор, пока начальное соединение не будет
сделано с правильными параметрами входа.
Для того чтобы сделать первоначальное
соединение, в диалоговом окне Windows File Manager
или Explorer введите вручную имя ресурса в
форме \\hostname\sharename.
Подключитесь к серверу посредством
правильных для данного сервера имени и
пароля.

Если вы подозреваете,
что ваш сервис имен NetBIOS неправильно
настроен (возможно, потому, что вы получаете
сообщение об ошибке «host not found (машина не
найдена)» при попытке подключения),
попытайтесь использовать IP-адрес сервера: \\host ip address\sharename.

Если вы хотите видеть Samba-директорию
в качестве сетевого диска, то вам следует
сделать на Windows-машинах следующие настройки.

Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для этого
заходим в свойства сети (щелкаем правой клавишей мыши на значке рабочего стола
«Сетевое окружение» (Network Neighborhood) и выбираем «Свойства»). Далее заходим
на закладку «Компьютер» (Identification). В поле «Имя компьютера»
(Computer name) прописываем Galka, в закладке «Рабочая группа» (Workgroup)
— PTO, а в закладке «Описание компьютера» (Computer Description) можете прописать
что угодно (рис. 3).

Дальше переходите на
закладку «Управление доступом» (Access Control) и
поставьте флажок в поле «На уровне ресурсов»
(Share-level access control).

Теперь переходите в
самую первую закладку «Конфигурация» (Configuration)
и нажмите на кнопке «Доступ к файлам и
принтерам» (File and print sharing). В появившемся
окне необходимо поставить флажки в поле «Файлы
этого компьютера можно сделать общими» (I want
to be able to give others access to my files) и «Принтеры этого
компьютера можно сделать общими» (I want to be able
to allow others to print to my printer(s)).

И наконец, мы указываем Windows, что Samba является сервером WINS и именно
он будет browse master’ом. Для этого переходим в свойства TCP/IP-протокола (рис.
4). В появившемся окне выбираем «Конфигурация WINS» (WINS Configuration).
Ставим флажок в поле «Включить распознавание WINS» (Enable WINS Resolution).
В появившемся поле «Основной сервер WINS» (WINS Server Search Order) прописываем
IP-адрес сервера (Samba) — 192.168.0.1 и нажимаем «Добавить» (Add) или просто
[Enter]. Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse
Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все.
Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.

В Windows NT экраны свойств
сети немного
различаются (показаны на рисунках), но
главная концепция построения остается той
же.

После перезагрузки
Windows смело жмите на «Сетевое окружение» (Network
Neighborhood) и вы сможете увидеть Samba-сервер,
а также свою домашнюю директорию на Linux-сервере.
Теперь вы можете просто подключить данные
ресурсы как сетевые диски и присвоить им drive
letters.

Немного усложним
конфигурацию:
сделаем директорию /home/public
доступной для чтения всеми, но разрешим
помещать в нее информацию только людям из
группы ADMINS.
Для этого изменим запись следующим образом:

[public]  
   comment = Public Stuff  
   path = /home/public  
   public = yes  
   writable = yes  
   printable = no  
   write list = @ADMINS  

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

Доступ к дискам Windows из Linux

Вряд ли начинающие
пользователи Linux OS смогут быстро
разобраться с системой доступа к Linux-файлам
из-под Windows, и наоборот. Но не все так сложно.
Доступ к Linux-ресурсам из под Windows был кратко
описан выше, а доступ к Windows-ресурсам из под
Linux мы сейчас рассмотрим.

Программа клиента SMB
для UNIX/Linux-машин включена в дистрибутив Samba.
Она обеспечивает ftp-подобный
интерфейс командной строки. Вы можете
использовать эту утилиту для переноса
файлов между «сервером» под управлением Windows
и клиентом под Linux.

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

/usr/sbin/smbclient -L host  

где host — это имя
машины, которую вы хотите видеть. Эта
команда вернет список имен сервисов — то
есть имен дисков или принтеров, к
которым может быть получен доступ. До тех
пор пока SMB-сервер не будет настроен без
управления доступом, он будет запрашивать у
вас пароль. Введите в ответ на запрос пароль
для пользователя «гость (guest)» или ваш
персональный пароль на этой машине.

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

/usr/sbin/smbclient service <password>  

где service — имя машины и сервиса.
Например, если вы пытаетесь обратиться к
директории, которая доступна под именем public
на машине, названной galka,
то имя сервиса должно звучать как \\galka\public.

Вы получите
приглашение smbclient:

Server time is Wen May 22 15:58:44 2001  
Timezone is UTC+10.0  
Domain=[WORKGROUP] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]  
smb: \>  

Команды для
использования Samba
аналогичны командам ftp,
но если вы не умеете пользоваться ни тем ни
другим, напечатайте h, чтобы получить помощь.

Вы, конечно, можете
использовать smbclient для тестирования, однако
очень скоро вам это надоест. Для работы вам
вероятнее всего понадобится пакет smbfs. Smbfs
поставляется с двумя простыми утилитами —
smbmount и smbumount. Они работают подобно mount и umount
для SMB-ресурсов. Например,

smbmount//computer_name/catalog/Mountpoint -U user_name 

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

Принт-сервер под Linux

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

Добавьте настройку
принтера в ваш файл smb.conf:

[global]  
   printing = bsd  
   printcap name = /etc/printcap  
   load printers = yes  
   log file = /var/log/samba-log.%m  
   lock directory = /var/lock/samba  
[print]  
   comment = All Printers  
   security = server  
   path = /var/spool/lpd/lp  
   browseable = no  
   printable = yes  
   public = yes  
   writable = no  
   create mode = 0700  
[ljet]  
   security = server  
   path = /var/spool/lpd/lp  
   printer name = lp  
   writable = yes  
   public = yes  
   printable = yes  
   print command = lpr -r -h -P %p %s  

Убедитесь, что путь к
принтеру (в нашем случае для [ljet])
соответствует буферной директории,
указанной в файле /etc/printcap, то есть проверьте наличие
строк:

printcap name = /etc/printcap  
load printers = yes  

Эти строки
контролируют, должны ли все принтеры,
перечисленные в /etc/printcap, быть загружены по
умолчанию. В этом случае нет нужды в
настройке каждого принтера в отдельности.
Раздел [printers] указывает настройки для
принтеров, которые вы хотите определить
явно. Если используемая вами подсистема
печати не работает подобным образом (BSD), то
вам необходимо настроить фальшивый файл
printcap (либо использовать ‘print command’, см. ниже).
Для получения дополнительной информации о
системе printcap см. Printing-HOWTO.

Доступ к принтеру Windows с машин, работающих под Linux

Для доступа к принтеру
на Windows-машине необходимо соблюдение
следующих условий:

  1. Вам необходимо иметь в файле
    /etc/printcap правильные записи, которые должны
    соответствовать локальной структуре
    директорий (для буферной директории и т.п.)

  2. У вас должен быть скрипт /usr/bin/smbprint.
    Он поставляется вместе с исходными
    текстами Samba, но не со всеми двоичными
    дистрибутивами Samba.

  3. Если вы хотите
    преобразовывать ASCII-файлы в PostScript,
    вы должны иметь программу nenscript или ее
    эквивалент. Программа nenscript —
    это конвертор PostScript,
    который
    обычно устанавливается в директорию /usr/bin.

Запись в приведенном
ниже файле /etc/printcap
сделана для принтера HP 5MP на сервере Windows NT.
Используются следующие поля файла /etc/printcap:

        cm — комментарий;  
        lp — имя устройства, открываемого для вывода;  
        sd — директория спула принтера (на локальной машине);  
        af — файл учета пользования принтером;  
        mx — максимальный размер файла (ноль — без ограничений);  
        if — имя входного фильтра (скрипта).  

Фрагмент
файла /etc/printcap:

# /etc/printcap
#
# //galka/oreilly via smbprint
#
lp:\
        :cm=HP 5MP Postscript OReilly on galka:\
        :lp=/dev/lp1:\
        :sd=/var/spool/lpd/lp:\
        :af=/var/spool/lpd/lp/acct:\
        :mx#0:\
        :if=/usr/bin/smbprint:

Убедитесь, что
буферные директории и директория,
применяемая для учета пользования,
существуют и имеют право на запись.
Убедитесь, что строка «if» содержит
правильный путь к скрипту smbprint (дан
ниже) и что записи указывают на правильное
устройство вывода (специальный файл /dev).

Далее идет сам скрипт smbprint. Он
обычно находится в директории /usr/bin и
написан Andrew Tridgell.

#!/bin/sh –x
#
# Debugging log file, change to /dev/null if you like.
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
#
# The last parameter to the filter is the accounting file name.
#
spool_dir=/var/spool/lpd/lp
config_file=$spool_dir/.config
# Should read the following variables set in the config file:
#   server
#   service
#   password
#   user
eval `cat $config_file`
#
# Some debugging help, change the >> to > if you want to same space.
#
echo "server $server, service $service" >> $logfile
(
# NOTE You may wish to add the line `echo translate' if you want automatic
# CR/LF translation when printing.
        echo translate
        echo "print -"
        cat
) 
| /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile

Большинство
дистрибутивов Linux поставляется с
программой nenscript
для преобразования ASCII-документов в PostScript.

Заключение

Еще совсем недавно
возможности Samba ограничивались лишь
перечисленными выше. Однако можно с
уверенностью говорить о том, что новая
версия Samba 2.2 догоняет Windows 2000 по
функциональным возможностям и содержит
дополнительные усовершенствования. Один из
ведущих разработчиков Samba Джереми Эллисон
(Jeremy Allison) называет ее «важным обновлением»,
которое поможет системам Samba легче
внедряться в сети Microsoft. ПО обеспечивает
экономию не только потому, что не нужно
платить за серверную ОС, но и потому, что не
приходится оплачивать «клиентские»
лицензии за все компьютеры, которые
используют сервер.

О новых возможностях
Samba 2.2. читайте в нашей статье «Samba
2.2 — что
нового» .

КомпьютерПресс 10’2001

Обновлено 24 марта 2021

Содержание

  • Введение
  • Настройка сервера
    • Настройка LDAP
    • Настройка Samba
    • Добавление и удаление пользователей
  • Настройка прав доступа
    • Настройка прав доступа к файловой системе
    • Настройка прав доступа для пользователей Windows-компьютеров
  • Структура Samba-групп
  • Подключение Unix-клиентов
  • Подключение Windows-клиентов
    • Подключение клиента с ОС Windows 7
      • Подключение клиента с ОС Windows 10
    • Подключение клиента с ОС Windows Server 2008
  • Просмотр информации

Введение

Samba — это популярный пакет программ с открытыми исходными текстами, который предоставляет файловые и принт-сервисы Microsoft® Windows® клиентам. Настройка Samba-сервера может быть выполнена при помощи утилит Calculate входящих в пакет sys-apps/calculate-server. Для хранения учётных записей пользователей, групп и машин и управления ими утилиты используют OpenLDAP-сервер. Необходимое программное обеспечение входит в состав Calculate Directory Server.

В качестве Linux клиента может выступать любая версия Calculate Linux Desktop (CLD, CLDC, CLDL, CLDM или CLDX). В качестве Windows клиентов могут быть использованы операционные системы семейства Windows. На данный момент Microsoft прекратила официальную поддержку доменов NT4 в операционных системах Windows. Однако с некоторыми изменениями вы все еще можете использовать более поздние выпущенные операционные системы Windows с доменом Samba NT4.

Настройка сервера

Настройка Samba-сервера выполняется в несколько этапов. Так как все данные пользователей и машин хранятся в LDAP, вначале неободимо выполнить настройку OpenLDAP-сервера, а затем — настройку LDAP для хранения учётных записей пользователей Linux. Это необходимо для работы Linux-клиентов. После этого можно настроить Samba-сервер.

Настройка LDAP

Настройте LDAP-сервер согласно руководству.

Настройка Samba

Перед настройкой Samba-сервера настройте LDAP для хранения учётных записей Unix-пользователей. Для этого выполните:

cl-setup unix

 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы и базу данных сервиса LDAP.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        [ ok ]
 * Unix сервис сконфигурирован ...                                                                               [ ok ]

Для настройки Samba-сервера выполните:

cl-setup [параметры] samba

 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы Samba сервиса.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        [ ok ]
 * Запускается Samba ...                                                                                         [ ok ]
 * Пользователь client добавлен в Unix сервис
 * Пользователь client добавлен в Samba сервис
 * Пользователь admin добавлен в Unix сервис
 * Пользователь admin добавлен в Samba сервис
 * Samba сервис сконфигурирован ...                                                                              [ ok ]

В качестве параметров вы можете указать netbios и workgroup.

  • -n name — устанавливает имя NetBIOS, под которым будет работать Samba сервер. По умолчанию оно устанавливается равным первому компоненту DNS-имени хоста.
  • -w workgroup — имя домена или рабочей группы NT для компьютеров, которые будут получать доступ к этому серверу.

Задайте пароль администратора (пользователь с логином admin):

cl-passwd —smb admin samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя admin Samba сервиса изменен

Заметка

Пользователь admin используется только для ввода клиентского компьютера с ОС Windows в домен. Admin не имеет домашней директории.

Если нужен администратор домена для управления компьютерами на Windows, создайте нового пользователя и включите его в доменную группу Domain Admins.

Пример создания администратора домена:

cl-useradd -p —gid «Domain Admins» -c «Администратор домена» d_admin samba

Новый SMB пароль:
Повторите новый SMB пароль:
* Пользователь d_admin добавлен в Unix сервис
* Пользователь d_admin добавлен в Samba сервис

Добавление и удаление пользователей

Для работы с пользователями используйте аналоги стандартных Unix-команд: cl-useradd, cl-userdel, cl-usermod, cl-passwd, cl-groupadd, cl-groupdel, cl-groupmod. Синтаксис этих команд будет во многом совпадать с одноименными системными утилитами.

Для примера добавьте пользователя test и задайте ему пароль:

cl-useradd test samba

* Пользователь test добавлен в Unix сервис
* Пользователь test добавлен в Samba сервис
cl-passwd test samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя Unix сервиса изменен
* Пароль пользователя test Samba сервиса изменен

Настройка прав доступа

Настройка прав доступа к файловой системе

Для настройки прав доступа к файлам на сервере используйте ACL (Access Control List — список контроля доступа). Изменяя права на файлы, вы ограничиваете к ним доступ в равной степени как для Windows-, так и для Linux-клиентов. При отсутствии прав доступа к файлам и директориям они не будут отображаться в Samba-ресурсе.

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

Для примера создадим Samba-группу manager:

cl-groupadd manager samba

* Группа 'manager' добавлена в Samba сервис

Для создания Unix-группы job, достаточно выполнить:

cl-groupadd job unix

* Группа 'job' добавлена в Unix сервис

Настройка прав доступа для пользователей Windows-компьютеров

Для настройки дополнительных прав Windows машин, таких как: возможность устанавливать программы, возможность выхода из домена и т.д., используйте Samba группы.

Пример повышения прав пользователя test до администратора домена:

cl-groupmod -a test ‘Domain Admins’ samba

 * Пользователи добавлены в группу Domain Admins

Структура Samba-групп

Samba-группы могут быть следующих типов:

  • Доменные группы (номер типа группы 2)
  • Локальные группы (номер типа группы 4)
  • Встроенные группы (номер типа группы 5)

Группы, созданные по умолчанию:

  • Доменные группы — глобальные группы, которые действуют в домене.

    • Domain Admins — администраторы домена (полные права на компьютерах в домене).
    • Domain Guests — гости домена (минимальные права).
    • Domain Users — пользователи домена.
    • Domain Computers — компьютеры домена.
  • Локальные группы — группы, действующие локально на данном компьютере.
    Локальные группы отсутствуют

  • Встроенные группы — группы встроенные в систему.

    • Administrators — администраторы (полные права).
    • Account Operators — операторы учетных записей. Создание и управление пользовательской учетной информацией, создание и управление группами, резервное копирование файлов и каталогов.
    • Backup Operators — операторы архивов. Резервное копирование, восстановление из резервной копии, остановка системы.
    • Print Operators — операторы печати. Управление принтерами, резервное копирование.
    • Replicators — репликаторы. Эта группа используется службой репликации File Replication на контроллерах домена.
    • System Operators — операторы системы. Изменение системного времени, останов системы, останов с удаленной системы, резервное копирование, восстановление из резервной копии, блокирование сервера, преодоление блокировки сервера, форматирование жесткого диска, управление сетевыми каталогами, управление принтерами.

Пример создания доменной группы test. По умолчанию создается доменная группа, тип группы — 2.

cl-groupadd test samba

 * Группа 'test' добавлена в Samba сервис

Пример создания встроенной группы Power Users — пользователей, имеющих дополнительные права.

cl-groupadd -g 547 —rid 547 -t 5 ‘Power Users’ samba

 * Группа 'Power Users' добавлена в Samba сервис

Где:

  • g — идентификатор группы 547 (Group ID)
  • rid — уникальный идентификатор 547 (RID)
  • t — тип группы 5 (встроенная группа)

Подключение Unix-клиентов

Если у вас не настроен DNS

Клиентская машина должна резолвить имя сервера calculate.example.org (hostname -f). Если у вас не настроен DNS, используйте один из двух вариантов:

  • На клиенте пропишите IP адрес сервера в /etc/hosts:
    <IP адрес> calculate.example.org
    
  • На сервере отредактируйте файл /var/calculate/remote/calculate.env, прописав в него IP адрес сервера:
    [client]
    sr_samba_host = <IP адрес>
    

Для подключения Unix-клиентов укажите пароль для служебного пользователя client:

cl-passwd —smb client samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя client Samba сервиса изменен

На клиентской машине выполните:

cl-client DOMAIN

* Проверка DOMAIN на наличие доменных ресурсов ...                                                              [ ok ]
Пароль для ввода рабочей станции в домен:
* Samba ресурс [remote] подключен
* Применены шаблоны ввода в домен ...
* Компьютер настроен для работы в домене
* Компьютен добавлен в домен DOMAIN

где DOMAIN — сетевое имя или IP-адрес сервера.

Подключение Windows-клиентов

Важно

В ОС семейства Windows активируйте учетную запись Администратора командой:
net user Администратор /active:yes

Подключение клиента с ОС Windows 7

Для подключения клиента с ОС Windows 7 войдите в систему под учётной записью Администратора и с помощью текстового редактора создайте текстовый файл с именем samba_7_2008_fix.reg со следующим содержимым:

samba_7_2008_fix.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000

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

Теперь необходимо ввести компьютер в Samba-домен. Для этого перейдите в свойства компьютера, а оттуда в настройку удалённого доступа. Во вкладке «Имя компьютера» нажмите кнопку «Изменить».

Ввод ОС Windows в Samba домен

Далее укажите, что компьютер является членом домена, и введите его имя:

Введите имя и пароль пользователя, созданного на Samba-сервере и входящего в группу администраторов домена:

Авторизация компьютера в домене

После этого компьютер станет членом домена:

Подключение клиента с ОС Windows 10

Для подключения клиента с ОС Windows 10 войдите в систему под учётной записью Администратора и с помощью текстового редактора создайте текстовый файл с именем samba_7_2008_fix.reg со следующим содержимым:

samba_7_2008_fix.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000

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

После этого перезапустите сервис samba:

/etc/init.d/samba restart

samba             | * samba -> stop: smbd ...                             [ ok ]
samba             | * samba -> stop: nmbd ...                             [ ok ]
samba             | * samba -> start: smbd ...                            [ ok ]
samba             | * samba -> start: nmbd ...                            [ ok ]

Теперь необходимо ввести компьютер в Samba-домен. Для этого перейдите в свойства компьютера, а оттуда в настройку удалённого доступа. Во вкладке «Имя компьютера» нажмите кнопку «Изменить».

Ввод ОС Windows в Samba домен

Далее укажите, что компьютер является членом домена, и введите его имя:

Введите имя и пароль пользователя, созданного на Samba-сервере и входящего в группу администраторов домена:

Авторизация компьютера в домене

После этого компьютер станет членом домена:

Подключение клиента с ОС Windows Server 2008

Для подключения клиента с ОС Windows 2008 войдите в систему под учётной записью Администратора и с помощью текстового редактора создайте текстовый файл с именем samba_7_2008_fix.reg со следующим содержимым:

samba_7_2008_fix.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000

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

Теперь необходимо ввести компьютер в Samba)домен. Для этого перейдите в свойства компьютера, а оттуда в настройку удалённого доступа. Во вкладке «Имя компьютера» нажмите кнопку «Изменить».

Ввод ОС Windows в Samba домен

Далее укажите, что компьютер является членом домена, и введите его имя:

Введите имя и пароль пользователя, созданного на Samba-сервере и входящего в группу администраторов домена:

Авторизация компьютера в домене

После этого компьютер станет членом домена:

Просмотр информации

Для просмотра информации о пользователях и группах сервера используйте утилиту cl-info. В качестве параметра может выступать один из сервисов: unix или samba.

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

cl-info -u unix

Все LDAP пользователи для сервиса Unix
+------+--------+-----------------------------+------------------+---------------------+
| ID   | Логин  | Полное имя                  | Первичная группа | Домашняя директория |
+------+--------+-----------------------------+------------------+---------------------+
| 900  | client | Client unix workstation     | 900              | /dev/null           |
| 901  | admin  | Administrator samba service | 544              | /dev/null           |
| 1000 | user1  | Calculate user              | user1            | /home/user1         |
| 1001 | user2  | Calculate user              | user2            | /home/user2         |
+------+--------+-----------------------------+------------------+---------------------+
(4 строк)

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

cl-info -u samba

Все LDAP пользователи для сервиса Samba
+--------+-----------------------------+--------------+--------+
| Логин  | Полное имя                  | Заблокирован | Пароль |
+--------+-----------------------------+--------------+--------+
| client | Client unix workstation     | Нет          | Да     |
| admin  | Administrator samba service | Нет          | Да     |
| user1  | Calculate user              | Нет          | Да     |
| user2  | Calculate user              | Нет          | Да     |
+--------+-----------------------------+--------------+--------+
(4 строк)

Пример команды для просмотра информации о пользователе user1 Unix-сервиса:

cl-info -U user1 unix

Информация о пользователе user1 для сервиса Unix
+-----------------------+--------------------------+
| Поле                  | Значение                 |
+-----------------------+--------------------------+
| ID                    | 1000                     |
| Логин                 | user1                    |
| Полное имя            | Calculate user           |
| Заблокирован          | Нет                      |
| Видимый               | Да                       |
| Первичная группа      | user1                    |
| Дополнительные группы | user1                    |
|                       | group                    |
| Домашняя директория   | /home/user1              |
| Оболочка              | /bin/bash                |
| Пароль                | Да                       |
| Изменение пароля      | 25.09.2018               |
| Jabber ID             | user1@server.example.com |
| Почтовый адрес        | usr1@example.com         |
+-----------------------+--------------------------+
(14 строк)

Пример команды для просмотра информации о пользователе user1 Samba-сервиса:

cl-info -U user1 samba

Информация о пользователе user1 для сервиса Samba
+-----------------------+------------------------------------------------------+
| Поле                  | Значение                                             |
+-----------------------+------------------------------------------------------+
| Логин                 | user1                                                |
| Полное имя            | Calculate user                                       |
| Заблокирован          | Нет                                                  |
| Пароль                | Да                                                   |
| Изменение пароля      | 25.09.2018                                           |
| Дополнительные группы | Нет                                                  |
| Домашняя директория   | /var/calculate/server-data/samba/home/user1          |
| Общая директория      | /var/calculate/server-data/samba/share               |
| Linux профиль         | /var/calculate/server-data/samba/profiles/unix/user1 |
| Windows профиль       | /var/calculate/server-data/samba/profiles/win/user1  |
| Windows logon         | /var/calculate/server-data/samba/netlogon/user1      |
+-----------------------+------------------------------------------------------+
(11 строк)

Пример команды для вывода списка Unix-групп:

cl-info -g unix

Все LDAP группы для сервиса Unix
+------------+--------------------+------+
| Группа     | Полное имя         | GID  |
+------------+--------------------+------+
| maildomain | Default Mail Users | 1000 |
| user1      | Calculate group    | 1001 |
| user2      | Calculate group    | 1002 |
| group      | Calculate group    | 1003 |
+------------+--------------------+------+
(4 строк)

Пример команды для вывода списка Samba-групп:

cl-info -g samba

Все LDAP группы для сервиса Samba
+-------------------+-----+-------------------+
| Группа            | GID | Тип группы        |
+-------------------+-----+-------------------+
| System Operators  | 549 | встроенная группа |
| Print Operators   | 550 | встроенная группа |
| Domain Guests     | 514 | доменная группа   |
| Domain Admins     | 512 | доменная группа   |
| Account Operators | 548 | встроенная группа |
| Domain Users      | 513 | доменная группа   |
| Administrators    | 544 | встроенная группа |
| client            | 900 | доменная группа   |
| Backup Operators  | 551 | встроенная группа |
| Replicators       | 552 | встроенная группа |
| Domain Computers  | 515 | доменная группа   |
+-------------------+-----+-------------------+
(11 строк)

Пример команды для просмотра информации о группе group Unix-сервиса:

cl-info -G group unix

+-----------------------+-----------------+
| Поле                  | Значение        |
+-----------------------+-----------------+
| Группа                | group           |
| Полное имя            | Calculate group |
| GID                   | 1003            |
| Пользователи в группе | user1           |
|                       | user2           |
+-----------------------+-----------------+
(5 строк)

Пример команды для просмотра информации о группе Domain Users Samba-сервиса:

cl-info -G ‘Domain Users’ samba

Информация о группе Domain Users для сервиса Samba
+-----------------------+-----------------+
| Поле                  | Значение        |
+-----------------------+-----------------+
| Группа                | Domain Users    |
| Полное имя            | Domain Users    |
| GID                   | 513             |
| Тип группы            | доменная группа |
| Пользователи в группе | Нет             |
+-----------------------+-----------------+
(5 строк)

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

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • 1809 windows 10 что это
  • Включение защиты системы windows
  • Windows 7 х86 torrent
  • Во время активации произошла ошибка 0xc004c003 windows 7 kmsauto
  • Чат бот для windows