Блог учителя Информатики

Комментарии отключены

Настройка Samba в Astra Linux

Настройка сервера Samba в Astra Linux 1.8 для доступа к файлам в локальной сети.

Откроем терминал и обновим список пакетов:

sudo apt update
Bash

Установим необходимые пакеты для работы Samba из репозитория дистрибутива:

sudo apt install samba samba-common
Bash

Для работы в сети мне необходимы две сетевые папки: одна с доступом на запись, другая — только для чтения. Также я настрою гостевой доступ к своим сетевым ресурсам, чтобы любой пользователь сети мог к ним подключиться, не имея на моём компьютере учётной записи.

Для начала создадим нужные директории. Папка classwork будет с возможностью записи, а readme — доступна только для чтения.

Создаём папку classwork внутри /srv/samba:

sudo mkdir -p /srv/samba/classwork
Bash

Теперь изменим владельца директории на пользователя nobody, а группу на nogroup. Это специальные непривилегированные учётные записи, которые используются для запуска процессов и доступа к файлам с минимальными правами:

sudo chown nobody:nogroup /srv/samba/classwork
Bash

Изменим права доступа к директории и файлам в ней на 0777. Это разрешит читать и писать в эту папку всем пользователям системы:

sudo chmod 0777 /srv/samba/classwork
Bash

Аналогично поступим с папкой readme:

sudo mkdir -p /srv/samba/readme
Bash

Изменим для неё владельца и группу:

sudo chown nobody:nogroup /srv/samba/readme
Bash

Зададим также права доступа к папке, чтобы любой локальный пользователь мог записывать туда файлы. Однако через сеть эта директория будет доступна только для чтения:

sudo chmod 0777 /srv/samba/readme
Bash

Теперь перейдём к настройке самого сервера Samba. Для начала сделаем резервную копию конфигурационного файла smb.conf:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Bash

Откроем файл smb.conf для редактирования:

sudo nano /etc/samba/smb.conf
Bash

В конфигурационном файле нужно найти секцию [global] и внести в неё правки. Но я поступаю проще: удаляю всё содержимое и добавляю только нужные мне параметры.

В самом начале файла записываем следующие строки:

[global]
   workgroup = WORKGROUP
   server string = SchoolServer7 Share
   security = user
   map to guest = Bad User
   guest account = nobody
Bash

Рассмотрим, что означают записанные параметры:

  • workgroup — задаёт рабочую группу Windows, в которой будет находиться сервер.
  • server string — описание Samba-сервера, которое он сообщает клиентам при подключении, чтобы они понимали, к какому компьютеру подключаются.
  • security — указывает модель аутентификации на сервере. Значение user означает, что она будет производиться по именам пользователей.
  • map to guest — определяет, как работать с пользователями. Значение Bad User означает, что запросы от несуществующих пользователей будут обрабатываться как гостевые.
  • guest account — какой Linux-пользователь будет использоваться для гостевых подключений (в нашем случае это nobody).

Ниже указываем секции [classwork] и [readme] с настройками наших сетевых папок:

[classwork]
   comment = Classwork (Read/Write)
   path = /srv/samba/classwork
   browseable = yes
   read only = no
   guest ok = yes
   create mask = 0777
   directory mask = 0777
   force user = nobody

[readme]
   comment = Readme (Read Only)
   path = /srv/samba/readme
   browseable = yes
   read only = yes
   guest ok = yes
   force user = nobody
Bash

Имя каждого сетевого ресурса записывается в квадратных скобках [classwork]. Именно под этим названием папка будет видна в сетевом окружении: smb://IP_сервера/classwork. Затем идут свойства, задающие параметры работы каждой сетевой папки:

  • comment — текстовое описание (комментарий), которое отображается рядом с именем папки при просмотре сетевого окружения.
  • path — абсолютный путь к реальной директории на файловой системе Linux-сервера, к которой мы открываем сетевой доступ.
  • browseable — определяет, будет ли папка видима в общем списке доступных ресурсов при просмотре сети. Если yes — то будет видима, если no — то не будет видима, но всё равно будет доступна при обращении по полному пути.
  • read only — указывает, будет ли папка доступна только для чтения. Если указано yes, папка доступна только для чтения. Если указано no, режим только для чтения отключается, и пользователи смогут создавать, изменять и удалять файлы в этой директории.
  • guest ok — управление гостевым входом. Если указано yes, гостевой доступ разрешён. Пользователи могут подключаться к этой папке без ввода логина и пароля.
  • create mask — указывает, с какой маской прав доступа будут создаваться новые файлы в этой папке. Значение 0777 означает rwxrwxrwx — полные права (чтение, запись, выполнение) для владельца, группы и всех остальных.
  • directory mask — маска прав доступа для новых подпапок (директорий), создаваемых в этой сетевой папке. 0777 даёт полные права на них всем.
  • force user — принудительно назначает системного пользователя nobody владельцем всех файлов и папок, создаваемых в этом ресурсе. Поскольку доступ гостевой (нет конкретного пользователя Linux), эта опция гарантирует, что все созданные файлы будут принадлежать одному системному пользователю, что предотвращает проблемы с правами доступа.

После сохранения конфигурационного файла Samba проверим его на наличие ошибок следующей командой:

testparm
Bash

Если в выводе команды есть строка Loaded services file OK., значит, ошибок нет и можно перезапускать наш сервер. Если же были найдены ошибки, необходимо вернуться к редактированию файла конфигурации и устранить их.

Перезапустим Samba с новой конфигурацией:

sudo systemctl restart smbd nmbd
Bash

Добавим сервер Samba в автозагрузку:

sudo systemctl enable smbd nmbd
Bash

После этих действий настроим доступ к сетевым папкам с другого компьютера с установленной Astra Linux 1.8 и графическим окружением Fly.

Открываем Менеджер файлов. В меню Сеть выбираем Создать сетевое место.

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

В поле Адрес прописываем путь к ресурсу. Обязательно указываем протокол, адрес компьютера и папку, к которой будем подключаться, в формате smb://ip_address/folder:

smb://10.42.195.99/classwork
Bash

Также в некоторых случаях вместо адреса можно указать имя компьютера (hostname):

smb://schoolserver/classwork
Bash

Далее для доступа нужно ввести учётные данные. Но так как у нас настроен гостевой вход, вводим имя пользователя guest и такой же пароль guest. После этого нажимаем Да, и связка логина и пароля сохраняется в системе. При следующем подключении вводить их не потребуется.

Для подключения с компьютеров под управлением Windows открываем Проводник и вводим адрес сервера в следующем формате:

\\10.42.195.99\classwork
Bash

Начиная с Windows 10, Microsoft отключила «небезопасные гостевые входы» по умолчанию. При попытке зайти на сетевую папку (шару) без пароля Windows выдаст ошибку «Указан недопустимый идентификатор» или «Нет доступа», даже если на сервере всё настроено идеально. Можно попробовать вернуть гостевой доступ к сетевым папкам:

  1. Нажмите Win + R, введите gpedit.msc и нажмите Enter.
  2. Перейдите по пути: Конфигурация компьютера → Административные шаблоны → Сеть → Рабочая станция Lanman (Computer Configuration → Administrative Templates → Network → Lanman Workstation).
  3. Найдите параметр Включить небезопасные гостевые входы (Enable insecure guest logons).
  4. Дважды кликните по нему, выберите Включено (Enabled) и нажмите ОК.

При включённом автоматическом входе в Astra Linux (графическая оболочка Fly) может возникнуть следующая проблема: Менеджер файлов при каждой попытке подключения к сетевому ресурсу будет запрашивать пароль для разблокировки хранилища ключей.

Дело в том, что при автоматическом входе пользователь не вводит свой пароль, из-за чего не разблокируется связка ключей (keyring), в которой хранятся учётные данные.

Можно каждый раз вводить пароль от учётной записи для разблокировки связки ключей, но есть и другие способы решения этой проблемы:

  • Отключить автоматический вход в систему для пользователя.
  • Создать новую связку ключей без пароля.

Поскольку по умолчанию связка ключей защищена паролем пользователя, мы удалим старую связку и создадим новую, но с пустым паролем.

⚠️ Внимание! Хранение паролей в связке ключей без пароля снижает безопасность системы. Используйте этот метод только в том случае, если вы понимаете риски и физическая безопасность вашего компьютера не вызывает опасений.

Остановим текущий демон связки ключей:

killall gnome-keyring-daemon
Bash

Удалим старые файлы связки ключей:

rm -rf ~/.local/share/keyrings/*
Bash

После этого перезагружаем компьютер. После загрузки откройте Менеджер файлов и попробуйте подключиться к сетевой папке, указав логин и пароль для доступа к ресурсу. В этот момент система сообщит, что связка ключей не создана, и предложит её создать. Соглашаемся. Когда система попросит ввести пароль для доступа к новой связке ключей, оставьте поле пустым и подтвердите действие.

После этого будет создана связка ключей с пустым паролем. Теперь при автоматическом входе в Fly связка будет разблокироваться автоматически, и Менеджер файлов перестанет запрашивать учётные данные для сетевых ресурсов.

Если же не получается подключиться удалённо к сетевым папкам, стоит проверить, не блокирует ли сетевой экран порты Samba.

Если используется ufw:

sudo ufw allow Samba
Bash

Если используется iptables / astra-firewall:

sudo iptables -A INPUT -p tcp --dport 445 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 137:139 -j ACCEPT
Bash

Служба nmbd, отвечающая за отображение имени компьютера в сетевом окружении, устаревает и часто блокируется в современных Windows. Если вы подключаетесь по IP, но не видите сервер в списке «Сеть», установите службу обнаружения wsdd.

sudo apt install wsdd
sudo systemctl enable --now wsdd
Bash

Это заставит ваш сервер корректно транслировать свое имя в современные сети Windows без использования устаревшего протокола NetBIOS.

Поделиться:
Вам также может понравится
Доступ в личный кабинет конструктора сайтов Кузбасса по TLS-протоколу
Синхронизация времени в Linux за proxy-сервером
Установка принтеров и сканеров в Astra Linux
Установка CryptoPro в Linux