- Что такое Samba
- Назначение Samba
- Установка Samba на Ubuntu 24.04
- Как настроить административный доступ в Samba
- Как настроить доступ для пользователей и групп в Samba
- Как настроить анонимный доступ в Samba
- Как настроить сетевую корзину в Samba
В этом руководстве мы узнаете, как установить Samba на Ubuntu 24.04
Что такое Samba
Samba — это программный пакет, который позволяет обмениваться файлами и принтерами между операционными системами Linux и Windows. С его помощью сервер под управлением Linux может предоставлять общие сетевые ресурсы — папки, файлы и устройства — так, как это делает Windows-сервер.
Основа работы Samba — протокол SMB (Server Message Block), также известный как CIFS (Common Internet File System). Он обеспечивает взаимодействие между компьютерами в локальной сети и позволяет пользователям подключаться к общим ресурсам без необходимости использовать дополнительные программы.
Назначение Samba
Samba используется для организации совместного доступа к файлам, папкам и принтерам в сетевой среде, где одновременно работают Linux и Windows. Она обеспечивает взаимодействие между этими системами, позволяя пользователям подключаться к общим ресурсам независимо от используемой платформы.
Samba выступает в роли файлового и печатного сервера, который управляет доступом к данным и устройствам. Благодаря ей можно:
- создавать общие сетевые каталоги, к которым подключаются пользователи Windows и Linux;
- централизованно хранить файлы и управлять разрешениями на доступ;
- настраивать печать по сети, используя общий принтер;
- интегрировать сервер Linux в существующую Windows-сеть или домен Active Directory;
- разграничивать права доступа, создавая пользователей и группы.
Установка Samba на Ubuntu 24.04
Чтобы установить Samba на Ubuntu 24.04 подключитесь к серверу по SSH под пользователем с административными правами. Например:
Обновите список пакетов и установите последние обновления:
sudo apt upgrade
Затем установите Samba:
Чтобы служба запускалась автоматически при старте системы, добавьте ее в автозагрузку:
После этого запустите Samba вручную:
Проверьте, работает ли служба корректно:
В случае успешного запуска в выводе будет указано, что служба active (running), например:
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-01-01 00:00:00 UTC; 15s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 12345 (smbd)
Status: "smbd: ready to serve connections..."
Если на сервере используется брандмауэр UFW, разрешите трафик для Samba:
Как настроить административный доступ в Samba
Подключитесь к серверу по SSH под пользователем с правами администратора:
Создайте директорию, к которой нужно предоставить доступ:
Вместо directory_name укажите свое название.
Чтобы пользователи могли читать и записывать файлы в эту папку, задайте полные права доступа:
Далее откройте конфигурационный файл Samba:
В конец файла добавьте следующий блок настроек:
comment = directory_name
path = /var/directory_name
public = no
writable = yes
read only = no
guest ok = no
create mask = 0775
directory mask = 0775
force create mode = 0775
force directory mode = 0775
Где:
- [directory_name] имя ресурса, отображаемое при подключении к серверу;
- comment описание ресурса;
- path путь к директории;
- public = no отключает публичный доступ;
- writable = yes разрешает запись в ресурс;
- read only = no дает возможность создавать файлы и папки;
- guest ok = no запрещает гостевой доступ;
- create mask, directory mask, force create mode и force directory mode задают права для создаваемых файлов и каталогов.
Сохраните изменения комбинацией клавиш Ctrl + O, затем закройте файл с помощью Ctrl + X.
Теперь создайте пользователя Samba, который будет иметь доступ к ресурсу:
Вместо username укажите нужное имя и задайте пароль.
Как настроить доступ для пользователей и групп в Samba
Подключитесь к серверу по SSH под пользователем с административными правами:
Создайте директорию, для которой нужно задать доступ.
Вместо group_directory укажите собственное имя папки.
Назначьте полные права доступа, чтобы Samba могла управлять файлами в этой папке:
Откройте конфигурационный файл Samba:
Добавьте в конец файла блок с настройками ресурса:
comment = group_directory
path = /var/group_directory
public = no
writable = no
read only = yes
guest ok = no
valid users = username1, username2, @group
write list = username
create mask = 0775
directory mask = 0775
force create mode = 0775
force directory mode = 0775
inherit owner = yes
Где:
- [group_directory] имя ресурса, которое будет отображаться при подключении;
- comment комментарий, отображаемый пользователям;
- path путь к директории;
- public = no отключает публичный доступ;
- writable = no запрещает запись для всех пользователей;
- read only = yes устанавливает режим только для чтения;
- guest ok = no запрещает доступ гостевым пользователям;
- valid users = username1, username2, @group задает список пользователей и групп, которым разрешен доступ (группы указываются со знаком @);
- write list = username определяет пользователей, имеющих право на запись;
- create mask, directory mask, force create mode, force directory mode — задают права для создаваемых файлов и папок;
- inherit owner = yes включает наследование владельца при создании новых файлов и каталогов.
Сохраните изменения сочетанием клавиш Ctrl + O, затем закройте файл с помощью Ctrl + X.
Чтобы применить новые настройки, перезапустите службу Samba:
Теперь доступ к папке будет предоставлен только указанным пользователям и группам в соответствии с заданными правами.
Как настроить анонимный доступ в Samba
Предположим, вы работаете с удаленным сервером, расположенным за пределами вашего основного облака. Согласно политике безопасности, прямое подключение к нему по IP-адресу запрещено, и взаимодействие возможно только через предварительно настроенный туннель. Как правило, такие серверы доступны по адресу 10.8.0.5, и именно с этим адресом будет происходить дальнейшая работа.
Чтобы предоставить общий доступ к данным без необходимости авторизации, изменим конфигурацию Samba. Сначала откройте файл настроек:
Перед редактированием рекомендуется создать резервную копию конфигурации, чтобы при необходимости можно было вернуть исходные настройки:
Затем удалите все комментарии из файла, оставив только рабочие параметры.
Для проверки корректности синтаксиса используйте команду:
Если ошибок не обнаружено, добавьте блок с настройками анонимного ресурса:
comment = общая папка
path = /srv/shared_data
public = yes
writable = yes
read only = no
guest ok = yes
Где:
- [public] имя ресурса, которое будет отображаться при подключении;
- comment описание папки (может быть любым);
- path путь к директории, в которой хранятся общие файлы;
- public = yes разрешает общий доступ без учетной записи;
- writable = yes позволяет пользователям записывать и изменять файлы;
- read only = no делает папку доступной для записи;
- guest ok = yes разрешает гостевое подключение без пароля.
Убедитесь, что права доступа к каталогу заданы верно.
Также рекомендуется установить маску 0777, чтобы всем пользователям были доступны чтение, запись и выполнение:
Перезапустите службу Samba:
Проверить доступ можно с другого компьютера, например из Windows, введя в адресной строке проводника:
\\10.8.0.5\public
Если все настроено правильно, общая папка откроется без запроса логина и пароля.
Как настроить сетевую корзину в Samba
Чтобы случайно не удалить важные файлы без возможности восстановления, в Samba можно настроить сетевую корзину. Все удаленные пользователями файлы будут временно перемещаться в отдельную директорию, откуда их можно будет восстановить.
Сначала создайте каталог для хранения удаленных файлов:
sudo chmod 777 /srv/recycle
Затем откройте файл конфигурации Samba:
Добавьте в конец файла следующий раздел:
comment = Корзина для временного хранения файлов
path = /srv/recycle
public = yes
browseable = yes
writable = yes
vfs objects = recycle
recycle:repository = .recycle/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
recycle:exclude = *.tmp, ~$*
recycle:exclude_dir = /tmp
Где:
- vfs objects = recycle активирует модуль recycle, который отвечает за создание корзины;
- recycle:repository определяет путь, где будут храниться удаленные файлы. В примере используется подкаталог .recycle, уникальный для каждого пользователя (%U);
- recycle:keeptree = Yes сохраняет структуру каталогов при удалении, чтобы файлы можно было легко найти;
- recycle:touch = Yes обновляет временные метки файлов при их перемещении в корзину;
- recycle:versions = Yes сохраняет несколько версий файлов с одинаковыми именами, добавляя к ним порядковый номер;
- recycle:maxsize = 0 отключает ограничение на размер удаляемых файлов;
- recycle:exclude задает шаблоны файлов, которые не будут помещаться в корзину (например, временные файлы *.tmp);
- recycle:exclude_dir исключает определенные каталоги (например, /tmp).
После внесения изменений сохраните файл (Ctrl + O, затем Ctrl + X) и перезапустите Samba, чтобы применить настройки:
Теперь при удалении файлов с сетевого ресурса они будут перемещаться в корзину /srv/recycle, откуда их можно будет восстановить.