Перейти к основному содержанию

Samba на Ubuntu Server в домене Windows

Ubuntu

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

Есть у меня аппаратный сервер с операционной системой Ubuntu Server 18.04.5 LTS. На сервере имеется большой том, который планируется использовать в качестве файлового хранилища.

Установка Ubuntu Server 18.04.5 LTS на сервер Dell PowerEdge R740xd2

IP и DNS

Серверу назначен прямой IP адрес, hostname внесён в DNS сервер. Причём DNS сервер для Linux машин отдельный от доменного, но оба они умеют резолвить адреса друг друга. Подробно на этом не будем останавливаться.

AD аутентификация

В операционной системе уже настроена доменная аутентификация, можно логиниться на сервер под учётной записью Active Directory, права доступа тоже управляются с помощью доменных групп. Аутентификацию на сервере не я настраивал, поэтому описывать процесс подробно не буду. Скажу только, что доменную аутентификацию можно сделать разными способами. Читайте про krb5-user (пакет для протокола Kerberos, который используется для аутентификации в Windows) и/или winbind (позволяет использовать учетную запись пользователя из Active Directory). Я winbind не использую.

Проверить аутентификацию:

kinit v.pupkin@ILAB.LOCAL
klist

NTP

Время должно быть синхронизировано. Если расхождение по времени больше пяти минут, то мы не получим тикет от Kerberos. В общем, аутентификация не заработает. Не буду описывать процесс настройки ntp.

Ссылки

https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

Установка samba

apt-get install samba

Самба настраивается в файле /etc/samba/smb.conf. Старый файл можно переименовать в smb.conf.bak, чтобы подсматривать параметры по умолчанию:

samba

Указываем глобальные настройки:

[global]

# домен и настройки SID
workgroup = ILAB
realm = ILAB.LOCAL
security = ads

idmap config * : backend = tdb
idmap config * : range = 1300000-1999999
idmap config ILAB : backend = rid
idmap config ILAB : read only = yes
idmap config ILAB : range = 100000-999999

# представляемся
server string = %h server (Samba, Ubuntu)

# логирование
log file = /var/log/samba/log.%m
max log size = 1000
log level = 1

# письмо при краше
panic action = /usr/share/samba/panic-action %d

# пароли и аутентификация (многое здесь мне непонятно и в AD не используется)
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n password\supdated\ssuccessfully* .
pam password change = yes

# убираем DNS проксирование
dns proxy = no

# не мешаем контроллерам домена
domain master = no
local master = no
preferred master = no

# отключаем принтеры
load printers = no
printing = bsd
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes

# убираем гостей и папки пользователей
usershare max shares = 0
usershare allow guests = no

Здесь:

  • workgroup — NETBIOS ИМЯ ДОМЕНА (или РАБОЧАЯ ГРУППА, если нет домена), в заглавном регистре
  • realm — ДОМЕН, в заглавном регистре
  • server string — имя сервера, которое будет отображаться в сетевом окружении
  • log file — логи
  • max log size — размер логов
  • log level — уровень логирования
  • panic action — действия при краше самбы, по умолчанию отправляет письмо админу
  • passdb backend — место хранения паролей
  • obey pam restrictions — поддержка PAM аутентификации, непонятно зачем она включена по умолчанию, потому что PAM аутентификация не может использоваться при "encrypt passwords = yes", а encrypt passwords при этом устарел и по умолчанию включен.
  • unix password sync — синхронизация паролей пользователей samba с локальными паролями, в AD не работает
  • passwd program — программа для синхронизации паролей, в AD не работает
  • passwd chat — текст для работы с паролями, в AD не работает
  • pam password change — поддержка смены пароля в PAM
  • security = ads — поддержка AD, самба ведёт себя как член домена.
  • dns proxy — обращаться ли к DNS для определения DNS имени по NETBIOS имени.
  • domain master — главный обозреватель домена
  • local master — главный обозреватель подсети
  • preferred master — предпочтительный обозреватель домена
  • load printers — загружать принтеры
  • printing — интерпретация статуса принтеров
  • show add printer wizard — отображать иконку добавления принтера
  • printcap name — определение списка принтеров
  • disable spoolss — поддержка SPOOLSS (для принтеров)
  • usershare max shares — папки пользователей
  • usershare allow guests — папки гостей
  • idmap config — настройки сопоставления SID с пользователями и группами POSIX

Давайте расшарим какую-нибудь папку, например, /u01/cron/, создаю её.

samba

Назначаю владельца и группу папки (пользователь и группа доменные!)

samba

Добавляем секцию в /etc/samba/smb.conf:

[bck-cron-u01]
path = /u01/cron
valid users = cron v.pupkin p.vupkin
read list   = cron v.pupkin p.vupkin
write list  = cron v.pupkin p.vupkin
read only = no

Здесь:

  • [NAME] — имя шары
  • path — путь к папке
  • valid users — кому можно войти
  • read list — кто имеет права на чтение
  • write list — кто имеет право на запись
  • read only — только чтение

Пример конфига:

  • [global]
    
    # домен и настройки SID
    workgroup = ILAB
    realm = ILAB.LOCAL
    security = ads
    
    idmap config * : backend = tdb
    idmap config * : range = 1300000-1999999
    idmap config ILAB : backend = rid
    idmap config ILAB : read only = yes
    idmap config ILAB : range = 100000-999999
    
    # представляемся
    server string = %h server (Samba, Ubuntu)
    
    # логирование
    log file = /var/log/samba/log.%m
    max log size = 1000
    log level = 1
    
    # письмо при краше
    panic action = /usr/share/samba/panic-action %d
    
    # пароли и аутентификация (многое здесь мне непонятно и в AD не используется)
    passdb backend = tdbsam
    obey pam restrictions = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n password\supdated\ssuccessfully* .
    pam password change = yes
    
    # убираем DNS проксирование
    dns proxy = no
    
    # не мешаем контроллерам домена
    domain master = no
    local master = no
    preferred master = no
    
    # отключаем принтеры
    load printers = no
    printing = bsd
    show add printer wizard = no
    printcap name = /dev/null
    disable spoolss = yes
    
    # убираем гостей и папки пользователей
    usershare max shares = 0
    usershare allow guests = no
    
    # шары
    
    [bck-cron-u01]
    path = /u01/cron
    valid users = cron v.pupkin p.vupkin
    read list   = cron v.pupkin p.vupkin
    write list  = cron v.pupkin p.vupkin
    read only = no

После изменения файла smb.conf не помешает проверить его утилитой testparm:

testparm

samba

Перезагружаем службу:

service smbd restart

Добавим сервер в домен:

net ads join -U v.pupkin -D ILAB.LOCAL

В случае успеха увидим что-то типа:

Using short domain name — DOMAIN
Joined 'SERVER' to realm 'domain.local'

У меня надпись немного другая:

samba

Сервер в домен добавился, но не прописался в DNS. В моём случае это нормально, потому как сервер прописан в DNS другой зоны, отличной от доменной. В AD сразу переношу его из папки Computers в нужный мне организационный юнит.

samba

Дадим 10 минут на распространение DNS зон, проверяем:

samba

Шара доступна.

Теги

 

Похожие материалы

Запуск графических приложений на сервере Oracle Linux 7.4 с удалённой Windows 10 машины

Иногда (или постоянно) сисадмину требуется запустить графическую программу на linux сервере. Сегодня будем запускать графический инсталлятор DB Oracle на сервере Oracle Linux 7.4

Теги

Создать WAV файл из текста в Ubuntu

Понадобилось мне как-то создать WAV файл из текстового файла в Ubuntu. Это было нужно для проигрывания сообщения в Asterisk для абонента. Сразу скажу, всё то же самое прекрасно работает в WSL 2 под Windows.

Теги

WinSCP — SFTP, FTP, SCP, WebDAV и S3 клиент для Windows

WinSCP — графический клиент для Windows, классический двухпанельный или как в проводнике. Обеспечивает защищённое копирование файлов между компьютером и серверами, поддерживающими протоколы SFTP, FTP, SCP, WebDAV и S3.

Теги