Сервис samba. Samba и Windows, файловый сервер для Windows сети. Настройка samba server под Linux
Samba - это программное обеспечение для организации обмена файлами и работы с общими ресурсами между компьютерами под управлением Linux/Unix и операционной системой Windows. Samba состоит из клиентской и серверной части. Клиентская часть позволяет получить доступ к сетевым папкам и ресурсам Windows, а серверная, в свою очередь, открывает общий доступ к папке Ubuntu для других машин, в том числе и Windows.
В этой небольшой инструкции будет рассмотрена простейшая настройка Samba Ubuntu 18.04, а также как настроить общий доступ к папке Ubuntu с несколькими уровнями привилегий.
Мы создадим три общие папки с различными уровнями разрешений. Папку с анонимным доступом, с доступом для пользователей, входящих в определенную группу и доступом лишь для определенного пользователя.
Получить доступ к расшаренным папкам в Ubuntu смогут как Linux так и Widnows машины, с помощью любой программы для работающей по протоколу SMB.
Для того чтобы все работало правильно, все машины должны состоять в одной рабочей группе, указанной на сервере Samba. По умолчанию для Windows, Linux и MacOS рабочая группа называется Workgroup. Чтобы узнать какая рабочая группа используется в вашей Windows откройте командную строку (Win+R, затем cmd) и выполните вот такую команду:
net config workstation
Нужный нам параметр мы видим в строке Домен рабочей станции . Это и есть рабочая группа.
Теперь, если у компьютера с Samba сервером в вашей сети будет постоянный IP адрес желательно ввести его в файле hosts. Для этого запустите командную строку от имени администратора:
И выполните команду:
notepad C:\Windows\System32\drivers\etc\hosts
В открывшимся файле добавьте строчку с IP адресом компьютера, на который будет установлен Samba:
192.168.0.1 srvr1.domain.com srvr1
Теперь можно переходить к вопросу как расшарить папку Ubuntu.
Настройка Samba в Ubuntu 16.04
Начнем, как обычно, с установки. Установка Samba Ubuntu вместе со всеми необходимыми компонентами выполняется командой:
sudo apt-get install -y samba samba-common python-glade2 system-config-samba
Когда все будет установлено, можно переходить к настройке. Сначала создайте резервную копию оригинального файла конфигурации Samba:
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
После создания резервной копии, создайте свой файл конфигурации, этой командой:
sudo vi /etc/samba/smb.conf
Сначала укажем глобальные настройки файлового сервера. Для этого вставьте в файл такие строки:
workgroup = WORKGROUP
netbios name = Ubuntu Share
dns proxy = no
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
pam password change = yes
map to guest = bad user
usershare allow guests = yes
Рассмотрим подробнее что значат эти строки.
- workgroup - рабочая группа, как уже говорилось должна одинакова на всех машинах
- netbios name - имя компьютера, которое будет отображаться в Windows;
- log file - адрес файла, куда будут складываться сообщения об ошибках и другая информация;
- security - по умолчанию выполнять аутентификацию на уровне пользователя;
- name resolve order - очередность разрешения IP адресов по NetBIOS имени. bcast - означает отправить в локальную сеть широковещательный запрос. Если все компьютеры между которыми планируется взаимодействие находятся в одной сети этот вариант оптимальный;
- passdb backend - способ хранения паролей пользователей;
- unix password sync - синхронизация паролей пользователей samba с локальными паролями Unix;
- map to guest - указывает, когда пользователю будет предоставляться гостевой доступ. Доступно три значения - never - никогда, bad user - когда такого пользователя не существует, bad password - когда пароль введен неверно,
Когда завершите создание конфигурационного файла, переходим к вопросу как расшарить папку Ubuntu для Windows.
Общий доступ к папке Ubuntu
Сначала давайте создадим общую папку доступную всем. То есть с анонимным доступом, без авторизации samba.
Создайте папку, к которой будем открывать доступ, например:
sudo mkdir -p /samba/allaccess
После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:
cd /samba
sudo chmod -R 0755 allaccess
sudo chown -R nobody:nogroup allaccess/
Следующим шагом будет описать папку allaccess в файле настройки samba:
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no
Теперь ваш конфигурационный файл должен выглядеть вот так:
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = Ubuntu Share
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
map to guest = bad user
usershare allow guests = yes
#==============
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no
Рассмотрим подробнее опции, которые были здесь использованы:
- path - путь к папке, которую нужно расшарить;
- browsable - будет ли папка отображаться в списке доступных шар;
- writable - будет ли папка доступна для записи;
- read only - папка доступна только для чтения;
- guest ok, public - будет ли разрешен гостевой доступ;
- only guest - если установлено yes, то папка будет доступна только гостям;
- hosts allow - ip адреса, с которых можно получить доступ к этому серверу;
- valid users - по умолчанию могут авторизоваться все пользователи, если в этом параметре передать список пользователей, то авторизоваться смогут только они;
- create mask - маска прав для создаваемых файлов.
Чтобы применить изменения, перезапустите сервер Samba:
sudo systemctl restart samba
Настройка Samba Ubuntu 16.04 для анонимного доступа завершена. Теперь вы можете проверить доступность общей папки allaccess из Windows, для этого нажмите Win+R и выполните:
\\srvr1\allaccess
Вы увидите нашу папку. Если не увидите, проверьте еще раз конфигурацию. Доступ к папке можно получить без авторизации samba. Настойка Samba шары с доступом без авторизации завершена.
Также вы можете подключится к этому серверу из Linux с помощью Nautilus для этого достаточно набрать адрес smb://ip-сервера , в разделе другие места:
Защищенный общий доступ к папке Ubuntu
Чтобы расшарить папку для Windows Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.
Сначала создаем папку:
sudo mkdir -p /samba/allaccess/secured
Создаем группу:
sudo addgroup securedgroup
Настраиваем права:
cd /samba/allaccess
$ sudo chown -R richard:securedgroup secured
$ sudo chmod -R 0770 secured/
Последний шаг, добавляем настройки в конфигурационный файл samba:
sudo vi /etc/samba/smb.conf
path = /samba/allaccess/secured
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes
Перезапустите сервер Samba. Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.
Чтобы проверить как это работает добавим пользователя richard в нашу группу:
sudo usermod -a -G securedgroup richard
Основной файл настройки Samba - /etc/samba/smb.conf. Изначальный файл конфигурации имеет значительное количество комментариев для документирования различных директив настройки.
Не все возможные опции включены в файле настроек по умолчанию. Смотрите руководство man smb.conf или Сборник ЧаВо по Samba для уточнения деталей.
1. Сначала измените следующие пары ключ/значение в секции файла /etc/samba/smb.conf:
Workgroup = EXAMPLE ... security = user
Параметр security находится значительно ниже в секции и по умолчанию закомментирован. Также замените EXAMPLE на что-то более соответствующее вашему окружению.
2. Создайте новую секцию в конце файла или раскомментируйте один из примеров для каталога, который нужно настроить на общий доступ:
Comment = Ubuntu File Server Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0755
comment : короткое описание разделяемого ресурса. Используется для вашего удобства.
path : путь до разделяемого каталога.
Этот пример использует /srv/samba/sharename поскольку, в соответствии со стандартом иерархии файловых систем (FHS), каталог /srv - это место, где должны находится все данные, относящиеся к данному сайту. Технически разделяемый ресурс Samba может быть размещен в любом месте файловой системы, где позволяют файловые ограничения доступа, но следование стандартам рекомендуется.
browsable : позволяет клиентам Windows просматривать содержимое разделяемого каталога с помощью проводника Windows.
guest ok : позволяет клиентам подключаться к разделяемому ресурсу без указания пароля.
read only : определяет доступность ресурса только на чтение или с привилегиями на запись. Привилегии на запись доступны только при указании no , как показано в данном примере. Если значение yes , то доступ к ресурсу будет только на чтение.
create mask : определяет какие права доступа будут установлены для создаваемых новых файлов.
3. Теперь, поскольку Samba настроена, требуется создать каталог и установить на него права доступа. Введите в терминале:
Sudo mkdir -p /srv/samba/share sudo chown nobody.nogroup /srv/samba/share/
параметр -p говорит mkdir создать полное дерево каталога, если оно не существует.
4. Наконец, перезапустите сервисы samba для применения новых настроек:
Sudo restart smbd sudo restart nmbd
Теперь вы можете находить Ubuntu файл сервер с помощью клиента Windows и просматривать его разделяемые каталоги. Если ваш клиент не показывает ваши разделяемые ресурсы автоматически, попробуйте обратиться к вашему серверу по его IP адресу, например, \\192.168.1.1, из окна проводника Windows. Для проверки, что все работает, попробуйте создать каталог внутри вашего разделяемого ресурса из Windows.
Для создания дополнительных разделяемых ресурсов создайте новую секцию в /etc/samba/smb.conf и перезапустите Samba. Просто убедитесь, что разделяемый каталог создан и у него корректные права доступа.
Разделяемый ресурс "" и путь /srv/samba/share - это просто примеры. Установите название ресурса и имя каталога в соответствии с вашим окружением. Хорошей идеей является использование в качестве названия ресурса имени его каталога в файловой системе. Другими словами ресурс можно указать как для каталога /srv/samba/qa.