Samba файловый сервер

Samba - программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS.

Простыми словами Samba — это программное обеспечение для реализации файлового сервера, а с 4-й версии и контроллера домена (аналог Windows Active Directory). Устанавливается как на Windows, так и Linux/FreeBSD. Также может быть установлена на некоторые модели роутеров для реализации простого домошнего файлового хранилища.

В качестве клиентской части для подключения к файловому серверу Samba может выступать программное обеспечение, работающее по протоколу SMB. В Linux/FreeBSD это samba client, в Windows — проводник.

Samba использует 137-139 порты UDP и Порты TCP.

Как установить и настроить Samba на Ubuntu Server 20.04

В руководстве описана установка и настройка автономного файлового сервера под управлением Samba Ubuntu Server 20.04 для доступа клиентов Windows, Linux, macOS.

Компьютеры под управлением Windows и Ubuntu должны быть членами локального домена или рабочей группы под названием WORKGROUP.

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

net config workstation

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

Обновляем пакеты и устанавливаем Samba сервер. Также установим клиента Samba - пригодится для тестирования настроек сервера.

sudo apt update
sudo apt install samba smbclient

Мы начнем со свежего чистого файла конфигурации smb.conf, удалив все закоментированные строки. А также сохраним файл конфигурации по умолчанию в качестве резервной копии для справочных целей. Выполните следующие команды linux, чтобы сделать копию существующего файла конфигурации и создать новый файл конфигурации /etc/samba/smb.conf:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo bash -c 'grep -v -E "^#|^;" /etc/samba/smb.conf_backup | grep . > /etc/samba/smb.conf'

У Samba есть собственная система управления пользователями. Однако любой пользователь, существующий в списке пользователей samba, также должен быть системным, то есть существовать в файле /etc/passwd. Если ваш системный пользователь еще не существует и, следовательно, не может быть расположен в файле /etc/passwd, сначала создайте нового пользователя с помощью команды useradd, прежде чем создавать любого нового пользователя Samba.

Создадим системного пользователя

sudo useradd -m -c "Name_User" -s /bin/bash buhnasmb
sudo passwd buhnasmb

Возьмем для примера имя buhnasmb, допустим что он уже есть в системе (проверить командой id), надо внести его в базу данных SMB и назначить пароль для доступа к общим ресурсам, сделаем это командой:

$ sudo id buhnasmb
uid=1003(buhnasmb) gid=1003(buhnasmb) groups=1003(buhnasmb)
 
$ sudo smbpasswd -a buhnasmb
 
New SMB password:
Retype new SMB password:
Added user buhna.

Создадим директорию для хранения расшаренных файлов и папок:

mkdir -p /home/hdd2backup/smb/buhnasmb

Добавьте в конец файла /etc/samba/smb.conf следующие строки, buhnasmb замените на имя пользователя компьютера с Samba. Папка будет открыта для чтения и записи.

[BackupWork]
comment = Samba Share
path = /home/hdd2backup/smb/buhnasmb
guest ok = yes
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb

Не забудьте поставить правильного владельца и права доступа на папку, которую вы расшариваете, например так:

sudo chmod ug+rwx /home/hdd2backup/smb/buhnasmb
sudo chown root:"пользователи домена" /home/hdd2backup/smb/buhnasmb

Перезапуск Samba:

sudo systemctl restart smbd.service

Теперь вы знаете, как создавать общедоступные общие ресурсы Samba. Теперь приступим к созданию частных и защищенных общих ресурсов.

Для того чтобы защитить открытую папку, вашего файлового сервер Samba, паролем достаточно изменить параметр guest ok на no и если вы хотите скрыть в обзоре сети вашу папку параметр browsable на no.

То есть настройка идентична ШАГ 4. Хорошо давайте повторю.

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

mkdir -p /home/hdd2backup/smb/protected

Пользователь тот же buhnasmb, напоминаю, что пароль для доступа к smb- ресурсам мы пользователю buhnasmb задали на ШАГ 3.

Добавьте в конец файла /etc/samba/smb.conf следующие строки, buhnasmb замените на имя пользователя компьютера с Samba. Папка будет доступна по логину и паролю.

[ProtectedSamba]
comment = Samba Protected Share
path = /home/hdd2backup/smb/protected
guest ok = no
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb

Задайте права на папку как в ШАГ 4:

sudo chmod ug+rwx /home/hdd2backup/smb/protected
sudo chown root:"пользователи домена" /home/hdd2backup/smb/protected

Перезапуск Samba:

sudo systemctl restart smbd.service
  • Проверьте правильность конфигурации Samba командой testparm:
# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
  • smbget позволяет скачивать с windows, linux (д.уст. samba) файлы через SMB протокол. Скачать рекурсивно все директории и файлы:
    smbget -Rr smb://ip_addr/share
  • smbclient - утилита для подключения к общедоступным папкам.
    • Отобразить общедоступные ресурсы на удаленном хосте:
      smbclient -L ip_addr/hostname
    • Посмотреть «шары» локально на стороне сервер
      smbclient -L 127.0.0.1
    • Просмотреть папку vip под пользователем tatyana
      $ smbclient \\\\10.26.95.220\\vip -U tatyana
  • nbtscan
    nbtscan ip_addr разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию,
    возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.
    nmblookup -A ip_addr
smb.conf
[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   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
   map to guest = bad user
   netbios name = back20
   usershare allow guests = yes
 
[PublicSamba]
comment = Samba  Anonymous Share
path = /home/hdd2backup/smb/buhnasmb
guest ok = yes
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb
 
[ProtectedSamba]
comment = Samba Protected Share
path = /home/hdd2backup/smb/protected
guest ok = no
browsable =yes
writable = yes
read only = no
force user = buhnasmb
force group = buhnasmb

FAQ Samba

  • Проблема. Windows настройка, ускорение, частые вопросы 7 не разрешает доступ к расшаренным папкам Samba 4 + LDAP по логину и паролю, без ввода Windows 7 в домен. Решение: Нужно отключить 128- битное шифрование (оно включено по умолчанию) при работе по сети. И тогда Windows 7 разрешит подключения дисков как сетвевых шар, но через стандартное сетевое окружение папки все равно не будут доступны. Полный бред однако!!!