- Настройка общей папки Samba на Ubuntu 22.04
- Предварительная подготовка
- Настройка общей папки Samba
- Настройка анонимного доступа
- Настройка доступа по логину и паролю
- Настройка ограниченного доступа
- Проверка доступа с клиента
- Проверка анонимного доступа
- Проверка доступа по логину и паролю
- Проверка ограниченного доступа
- Общая папка в Ubuntu: зачем нужна и как создать
- Устанавливаем сервер Samba
- Установка
- Настройки
- Создаем общую папку Samba, доступную для всех
- Редактируем настройки
- Перезапуск Samba
- Проверка правильности конфигурации Samba
- Защищенная папка Samba, доступная только по паролю
Настройка общей папки Samba на Ubuntu 22.04
Очередная краткая шпаргалка. На этот раз о том, как выполняется настройка общей папки Samba на Ubuntu 22.04. В тестовых стендах уже пару раз возникала необходимость настройки передачи файлов между Windows и Linux системами. Оказалось, что через общую папку на smb вполне удобный вариант. Да, можно использовать, например, WinSCP. Но тут уже дело вкуса и предпочтений.
В качестве Samba сервера я буду использовать Ubuntu Server 22.04.
Предварительная подготовка
Сначала я установлю пакет sabma:
sudo apt -y update && sudo apt -y install samba
Настрою автоматический запуск сервера smb:
sudo systemctl enable smbd
Теперь нужно запустить сервер smb
sudo systemctl start smbd
Заключительный шаг по подготовке – проверка статуса сервиса smb:
sudo systemctl status smbd
roman@test1:~$ sudo systemctl status smbd ● smbd.service - Samba SMB Daemon Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-05-30 16:14:15 UTC; 2min 24s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 2842 (smbd) Status: "smbd: ready to serve connections. " Tasks: 4 (limit: 9362) Memory: 10.4M CPU: 136ms CGroup: /system.slice/smbd.service ├─2842 /usr/sbin/smbd --foreground --no-process-group ├─2844 /usr/sbin/smbd --foreground --no-process-group ├─2845 /usr/sbin/smbd --foreground --no-process-group └─2846 /usr/lib/x86_64-linux-gnu/samba/samba-bgqd --ready-signal-fd=45 --parent-watch-fd=11 --de> May 30 16:14:15 test1 systemd[1]: Starting Samba SMB Daemon. May 30 16:14:15 test1 update-apparmor-samba-profile[2836]: grep: /etc/apparmor.d/samba/smbd-shares: No such f> May 30 16:14:15 test1 update-apparmor-samba-profile[2839]: diff: /etc/apparmor.d/samba/smbd-shares: No such f> May 30 16:14:15 test1 systemd[1]: Started Samba SMB Daemon.
Сервис должен быть запущен.
Настройка общей папки Samba
Теперь я создам пару директорий, которые я буду использовать для настройки различных вариантов ограничения доступа к smb ресурсу:
sudo mkdir -p /data/guestshare sudo mkdir -p /data/pwd sudo mkdir -p /data/restricted
Настройка анонимного доступа
Этот вариант подойдет в том случае, если в директории разрешено складировать файлы или удалять файлы абсолютно всем – даже без указания логина и пароля. Крайне не рекомендую использовать этот вариант в боевой среде. Но для демонстрационных сред очень даже удобный вариант.
Сначала зададим соответствующие разрешения на уровне директории:
sudo chmod 777 /data/guestshare
Теперь скорректируем файл конфигурации для общих ресурсов smb:
sudo nano /etc/samba/smb.conf
Теперь я добавлю следующий блок с конфигураций для анонимного доступа:
# Guest access [guestshare] path = /data/guestshare writable = yes guest ok = yes guest only = yes create mode = 0777 directory mode = 0777
В таблице ниже я кратко опишу основные параметры.
Параметр | Назначение |
[guestshare] | Имя smb ресурса |
path | Физическое расположение директории на сервере |
writable | Запись в директорию разрешена, если установлено значение yes |
guest ok | Анонимный доступ разрешен, если установлено значение yes |
guest only | Если установлен параметр yes, то разрешен только анонимный доступ к ресурсу |
create mode | Все новые файлы будут создаваться с указанными разрешениями (777 в моем случае) |
directory mode | Все новые директории будут создаваться с указанными разрешениями (777 в моем случае) |
Настройка доступа по логину и паролю
Теперь немного расширим задачу. Доступ к smb ресурсу должны получать только аутентифицированные пользователи. Отмечу, что доступ может получить любой аутентифицированный пользователь. Аутентификация производится сервером smb через локальную базу учетных записей на сервере.
Установлю нужные разрешения для директории:
Скорректируем файл конфигурации для общих ресурсов smb:
sudo nano /etc/samba/smb.conf
Теперь я добавлю следующий блок с конфигураций для анонимного доступа:
# Password access [pwd] path = /data/pwd writable = yes guest ok = no public = no create mode = 0777 directory mode = 0777
В таблице ниже я кратко опишу основные параметры.
Параметр | Назначение |
[pwd] | Имя smb ресурса |
path | Физическое расположение директории на сервере |
writable | Запись в директорию разрешена, если установлено значение yes |
guest ok | Анонимный доступ запрещен, если установлено значение no |
public | Если установлено значение “no”, то публичный доступ к ресурсу запрещен |
create mode | Все новые файлы будут создаваться с указанными разрешениями (777 в моем случае) |
directory mode | Все новые директории будут создаваться с указанными разрешениями (777 в моем случае) |
Теперь нужно создать пользователя и установить пароль для его учетной записи:
sudo useradd user1 && sudo passwd user1
Также нужно задать пароль для пользователя user1 для доступа по smb:
Настройка ограниченного доступа
Последний распространеный вариант – настройка ограниченного доступа. Под ограниченным доступом я подразумеваю доступ только для какой-то конкретной группы или пользователя. Я настрою ограничение для пользователя.
Создам дополнительного пользователя и установлю пароль для его учетной записи, а также выполню настройку разрешений.
sudo useradd -M -d /home/user6 -s /usr/sbin/nologin user6 && sudo passwd user6 sudo mkdir /home/user6 sudo chown user6:user6 /home/user6 sudo chmod 2770 /home/user6
Также нужно задать пароль для пользователя user6 для доступа по smb:
sudo smbpasswd -a user6 sudo smbpasswd -e user6
Изменю владельца для директории:
sudo chown user6:user6 /data/restricted/
Также я оставлю полные разрешения только для владельца и группы владельца:
sudo chmod 770 /data/restricted/
Скорректируем файл конфигурации для общих ресурсов smb:
sudo nano /etc/samba/smb.conf
Теперь я добавлю следующий блок с конфигураций для анонимного доступа:
# Restricted access [restricted] path = /data/restricted read only = no browseable = yes create mode = 0660 directory mode = 2770 valid users = user6
В таблице ниже я кратко опишу основные параметры.
Параметр | Назначение |
[restricted] | Имя smb ресурса |
path | Физическое расположение директории на сервере |
browseable | Если установлен параметр “yes”, то ресурс будет отображаться при запросе списка ресурсов на сервере. Если установлен параметр “no”, то ресурс будет доступен только по прямому пути. Например, \\10.10.10.33\restricted |
read only | Определяет, является ли ресурс доступным только для чтения |
create mode | Все новые файлы будут создаваться с указанными разрешениями (777 в моем случае) |
directory mode | Все новые директории будут создаваться с указанными разрешениями (777 в моем случае) |
valid users | Перечень пользователей, которым разрешен доступ к ресурсу. В моем случае – это пользователь user6. Список пользователей разделяется пробелом |
Дополнительно необходимо перезапустить службы:
sudo systemctl restart smbd nmbd
Проверка доступа с клиента
В разделе выше я показал три возможных варианта для настройки общей smb директории. Теперь можно проверить все три варианта доступа.
Проверка анонимного доступа
Довольно простой случай. Просто перейдите по адресу сервера и имени директории и вы должны получить доступ к ресурсу без каких-либо запросов на аутентификацию и ограничений:
Также у вас должна быть возможность создавать директории и файлы:
Проверка доступа по логину и паролю
Поскольку анонимный доступ в этом сценарии не разрешен, то нам нужно будет указать логин и пароль для доступа к smb ресурсу. Перейдите по адресу сервера и имени директории и вы должны получить доступ к ресурсу без каких-либо запросов на аутентификацию и ограничений:
Как только вы попробуете получить доступ к директории, то samba сервер сразу попросит вас предоставить ваш логин и пароль.
После указания логина и пароля у вас должна быть возможность получить доступ к ресурсу, а также возможность создавать объекты внутри этой директории.
Проверка ограниченного доступа
Это последний вариант проверки. Наш сценарий таков, что только пользователь user6 должен получить доступ к ресурсу. Всем остальынм пользователя доступ запрещен.
Попробую получить доступ к ресурсу:
Появится окно с запросом учетных данных. Попробую указать учетные данные пользователя user1:
В доступе отказано. Ожидаемо.
Теперь я укажу учетные данные пользователя user6.
Вот теперь я могу успешно получить доступ к ресурсу и создавать различные файлы и директории.
Общая папка в Ubuntu: зачем нужна и как создать
Основная цель такой папки — возможность обмена файлами в локальной сети между Linux и Windows-машинами. Специфической привязки к 1С-направлению здесь нет, но такая папка поможет разработчикам хранить файлы конфигураций 1С, а также выгрузки документации по разработке и отчеты для обеспечения оперативного доступа при отсутствии ответственного сотрудника на месте.
В целом Ubuntu поставляется с общей папкой в домашнем каталоге. Она недоступна по умолчанию, но настраивается несколько различных типов обмена файлами в локальной сети компании. Изначальное предназначение папки — инструмент личного обмена файлами.
Главное стартовое условие — компьютеры, между которыми предполагается организовать обмен, должны быть локальной сети.
Устанавливаем сервер Samba
В качестве предпочтительного способа мы выбрали сервер Samba — есть и другие способы, но они требуют наличие Интернета. Samba — проверенное годами решение для ситуаций, когда файлы нужно хранить на сервере Linux.
Samba — Linux, Windows или Mac OS совместимый пакет программного обеспечения, позволяющий обмениваться файлами, документами и принтерами по сети.
Установка
apt install samba samba-common
Для тестирования настроек устанавливаем клиент Samba.
apt install samba-common-bin
Настройки
Скопируем шаблонный файл настроек на случай возврата в исходное состояние.
cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Удаляем все закомментированные строки из файла настроек.
bash -c ‘grep -v -E «^#|^;» /etc/samba/smb.conf.backup | grep . > /etc/samba/smb.conf’
Создаем отдельного системного пользователя
useradd -m -c «Name_User» -s /bin/bash usersamba
Создаем общую папку Samba, доступную для всех
Настраиваем права доступа к папке:
chown -R nobody:nogroup /home/usersamba/smb/
chmod ug+rwx /home/usersamba/smb/
chmod -R 0775 /home/usersamba/smb/
chown root:»пользователи домена» /home/usersamba/smb/
Редактируем настройки
sudo gedit /etc/samba/smb.conf
Добавляем в конец файла /etc/samba/smb.conf следующие строки: usersamba заменяем на имя пользователя компьютера с Samba.
Папка будет открыта для чтения и записи.
Перезапуск Samba
systemctl restart smbd.service
Проверка правильности конфигурации Samba
Защищенная папка Samba, доступная только по паролю
Для того, чтобы защитить открытую папку паролем, достаточно изменить параметр guest ok на no.
Чтобы скрыть в обзоре сети папку, можно изменить параметр browsable на no.