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

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

Samba

Введение

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 строк)