Samba - это программа которая представляет собой файловый сервер работающий по протоколу SMB/CIFS и позволяет предоставлять доступ к общим ресурсам в локальной сети для систем на базе Linux или Windows. Начиная с четвёртой версии, Samba может выступать в роли контроллера домена Active Directory и способна обслуживать все поддерживаемые версии Windows, в том числе и Windows 10.
Samba работает на всех популярных ОС - Windows, MacOS и Linux, полностью бесплатна и с открытым исходным кодом. В данной статье будет рассмотрена установка Samba в Debian 11, его настройка, а также подключение из операционной системы Windows 10.
Содержание статьи
Установка сервера Samba в Debian 11
Перед установкой Samba необходимо обновить список доступных пакетов в системе. Сделать это можно при помощи команды:
sudo apt update
Далее необходимо установить программу при помощи команды:
sudo apt -y install samba
На этом этапе установка Samba Debian 11 завершена.
Настройка Samba в Debian 11
Перед правкой конфигурационного файла Samba - smb.conf необходимо сделать его резервную копию чтобы в случае проблем можно было использовать конфигурационный файл по умолчанию. Для этого необходимо выполнить команду:
sudo cp /etc/samba/smb.conf{,backup}
Вместо .backup можно написать любое другое слово. Главное, чтобы вам было понятно, что данный файл будет использоваться при восстановлении. Чтобы использовать оригинальный файл для «отката» при выявлении проблем необходимо вернуть ему оригинальное имя - smb.conf а второй файл удалить.
Настройка общих параметров
В конфигурационном файле Samba присутствует блок с именем global, который начинается со строки [global]. Этот блок отвечает за глобальные настройки Samba (то есть настройки, которые в целом влияют на сервер Samba). На скриншотах ниже показаны параметры глобального блока:
Символ ; - точки с запятой установленный перед параметром означает что он закомментирован и не используется. Для использования необходимо удалить символ. Разберем основные параметры.
workgroup = WORKGROUP
Определяет рабочую группу, в которой сервер будет отображаться при запросе клиентов. Группа по умолчанию – WORKGROUP (для Windows), можно изменить её на другое имя при условии, что данная группа уже присутствует на необходимом компьютере.
interfaces = 127.0.0.0/8 eth0
Задаёт IP адрес и имя интерфейса, на котором будет работать Samba.
bind interfaces only = yes
Позволяет ограничивать интерфейсы на машине, обслуживающие запросы Samba. Работает вместе с параметром interfaces. Если выставлен yes то Samba будет принимать трафик только с интерфейса заданного в параметре interfaces.
log file = /var/log/samba/log.%m
Задаёт путь до лог файла, в который будут записываться все события Samba.
max log size = 1000
Задаёт максимальный размер лог файла в мегабайтах, указанного в параметре log file.
panic action = /usr/share/samba/panic-action %d
Опция предназначена для разработчиков. Позволяет запустить системную команду, когда Samba завершается с ошибками. Используется, в основном для того, чтобы привлечь внимание к возникшей проблеме.
server role = standalone server
Этот параметр определяет основной режим работы сервера Samba. По умолчанию выставлен как автономный сервер (т.е. сервер не относящийся к какому-либо контроллеру домена и не входящему в какой-либо домен).
obey pam restrictions = yes
Если Samba была сконфигурирована с поддержкой PAM данный параметр сообщает о том следует ли Samba использовать учетные записи модуля PAM. Поведение по умолчанию подразумевает использование PAM только для нешифрованной аутентификации и игнорирует директивы учетных записей и управление сессиями.
unix password sync = yes
Параметр позволяющий использовать встроенную утилиту smbpasswd. Если опция включена (yes), то Samba будет изменять пароли с помощью smbpasswd.
Настройка общей шары
Для предоставления доступа к общим ресурсам в Samba есть 2 способа разграничения прав доступа - предоставление анонимного доступа (доступа не требующего прохождения аутентификации, т.е. всем пользователям) и предоставление доступа только конкретным пользователям. Рассмотрим оба способа.
Для начала необходимо создать директорию, к которой необходимо предоставить доступ:
sudo mkdir -p /anonymous/files
Далее необходимо задать права и владельца на ранее созданную директорию для предоставления доступа. Сначала задаём права при помощи команды:
sudo chmod -R 0755 /anonymous/files
Потом задаём владельца и группу при помощи команды:
sudo chown -R nobody:nogroup /anonymous/files
После этого в файле конфигурации smb.conf необходимо вписать или привести к следующему виду блоки:
sudo nano /etc/samba/smb.conf
Сохраните изменения и закройте файл. Далее необходимо проверить конфигурационный файл на наличие ошибок при помощи команды:
testparam
Если в выводе напротив параметра Loaded services file будет написано ОК это означает что конфигурационный файл успешно прошел проверку и не содержит ошибок.
Настройка защищённой шары
Чтобы предоставить доступа к файлам и папкам определенным пользователям необходимо также создать директорию:
sudo mkdir -p /files/samba/security
Далее необходимо создать группу, пользователей и добавить туда ранее созданных пользователей. Для этого необходимо выполнить следующие команды:
sudo groupadd security_users
sudo useradd sec1 -G security_users
Далее необходимо задать права и владельца на ранее созданную директорию при помощи команд:
sudo chown -R root:security_users /files/samba/security/
Теперь необходимо добавить ранее созданного пользователя в базу данных Samba и задать ему пароль при помощи встроенной утилиты Samba под названием smbpasswd:
sudo smbpasswd -a sec1
Далее необходимо добавить следующие строки в конфигурационный файл smb.conf:
sudo nano /etc/samba/smb.conf
Также не забывайте проверять конфигурационный файл на наличие ошибок после внесения любых изменений при помощи команды:
testparam
Если в выводе напротив параметра Loaded services file будет написано ОК это означает что конфигурационный файл успешно прошел проверку и не содержит ошибок. Для выхода из режима теста нажмите на клавишу Enter. Теперь настройка samba debian 11 завершена.
Подключение к серверу Samba
После проверки файла конфигурации на ошибки необходимо запустить сервисы Samba и включить их в автозагрузку при помощи следующих команд:
sudo systemctl start smbd.service
sudo systemctl enable smbd.service
sudo systemctl start nmbd.service
sudo systemctl enable nmbd.service
Для подключения к ресурсу без логина/пароля (анонимный доступ) в ОС Windows необходимо открыть программу «Выполнить» путем нажатия на сочетание клавиш Win+R. В открывшейся строке введите следующую команду и нажмите на ОК или клавишу Enter:
Где 192.168.189.147 - IP адрес компьютера, на котором запущена Samba:
В открывшемся окне найдите директорию, которая была создана для анонимного доступа. В качестве примера была задана директория Anonymous:
После перехода отобразится содержимое данной директории:
Для подключения при помощи логина и пароля необходимо точно также подключиться к серверу Samba как описано выше и выбрать ранее созданную директорию. В качестве примера была задана директория secured. Перейдите в необходимую директорию и отобразится диалогов окно с вводом логина и пароля:
После ввода логина и пароля пользователя отобразится ранее созданная директория и её содержимое:
Если при подключении из Windows система «не видит» адрес Samba сервера, то необходимо установить программу Avahi-daemon - систему, обеспечивающую обнаружение сервисов в локальной сети. Более подробное о данной системе можно прочитать в статье Ubuntu не видит сеть в Windows
Выводы
В данной статье вы узнали как выполняется установка и настройка Samba Debian 11. Samba обладает богатым функционалом который позволяет реализовать сетевой доступ до разных ресурсов - сетевых директорий, компьютеров, принтеров. Настройка реализуется через единственный конфигурационный файл что облегчает настойку программы. Если у вас остались вопросы задавайте их в комментариях!
Было бы здорово показать как настроить Samba в качестве контроллера AD и насколько он адекватно работает для Windows-клиентов (GPO, авторизация, аутентификация и др.)
"Символ ; - точки с запятой установленный перед параметром означает что он закомментирован и не используется." Там же # а не ;
Зачем "read only" и "writable" в одной настройке?
Зачем вообще указывать "browsable"?
testparam -> testparm
В статье так и не исправлена ошибка про $testparam (в двух местах). При этом на скрине команда корректная testparm.
Причём это не первая статья о настройке самбы. В других та же ошибка testparam
Какая всё-таки шляпа этот Линукс. На Винде все это делается взмахом руки, а тут задро-во какое-то.
Пути назад нет. Не захотите развиваться в этом направлении - устареете и вас спишут. Все просто.