23.5. Включение аутентификации на сервере Samba

Проблема

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

Решение

Чтобы настроить аутентификацию на сервере Samba, начните с конфигурации файла smb.conf. Включите режим безопасности уровня пользователей, требуйте шифрования паролей и настройте разрешенные IP-адреса для подключения. Такие параметры включены по умолчанию в Samba 3.0 и выше, однако для точности лучше указать их явно.

Настройка безопасности уровня пользователей в smb.conf

Откройте файл smb.conf и добавьте или измените следующие строки для конфигурации безопасности:

[global]
   workgroup = WORKGROUP
   netbios name = SERVERNAME
   server string = Samba File Server
   security = user
   encrypt passwords = yes
   browseable = no
   hosts allow = 192.168.1.

Настройки секции [global] определяют параметры безопасности для всех подключений к серверу. Важно указать security = user, чтобы требовать у пользователей учетные записи и пароли. Опция encrypt passwords = yes обеспечит шифрование паролей, а hosts allow ограничит доступ для указанных IP-адресов.

Настройка общего каталога

Создайте секцию для общих файлов, задав путь к каталогу и параметры доступа:

[share]
   path = /sharedstuff
   comment = Shared Files
   read only = no

Эта настройка создаст доступный каталог /sharedstuff с правами на запись. Теперь, когда конфигурация завершена, перезапустите Samba для применения изменений:

# systemctl restart smbd

Создание учетных записей Samba

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

# smbpasswd -a username
New SMB password:
Retype new SMB password:
Added user username.

Внимание: Пользователи Samba должны существовать в системе Linux. Если учетная запись пользователя отсутствует в /etc/passwd, команда smbpasswd выдаст ошибку.

Пример ошибки:

Failed to initialize SAM_ACCOUNT for user <username>.
Failed to modify password entry for user <username>.

Комментарий

Схема с отдельными базами данных для паролей Samba и системных учетных записей объясняется различиями между системами Unix и Windows в вопросах хранения паролей и управления доступом к файлам. Команда smbpasswd позволяет связать обе системы, чтобы пользователи могли беспрепятственно подключаться с различных платформ.

Для преобразования учетных записей из /etc/passwd в формат Samba (например, /etc/samba/smbpasswd) можно использовать команду mksmbpasswd:

# mksmbpasswd < /etc/passwd > /etc/samba/smbpasswd

Дополнительные рекомендации по безопасности

См. также

Официальная документация Samba; smb.conf(5); smbpasswd(8)