Найти тему

Подключение общих папок SMB

Оглавление

Привет!

Рано или поздно встает вопрос подключение общих папок Windows, либо общих папок samba-сервера. Сегодня мы посмотрим как можно подключить общие сетевые ресурсы smb в Astra Linux SE 1.7.

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

Для тестового стенда имеется:

  • контроллер домена AD (dc01.win.lan) с расшаренной папкой (domain) для доменных пользователей.
  • Astra Linux 1.7 вне домена (192.168.50.197) с расшаренной Samba-папкой (all) для всех, включая гостевой доступ.
  • Клиентская Astra Linux 1.7 в домене (win.lan)
  • Клиентская Astra Linux 1.7 вне домена

Итак приступим:

1. Посредством файлового менеджера Fly

В стандартном файловом менеджере Fly есть возможность добавить сетевую папку. Для этого в меню Сеть нужно выбрать Создать сетевое место. Обратите внимание, что в отличие от windows путей здесь нужно указать и протокол в строке подключения. Например smb://192.168.50.1/share

-2
-3
-4

Если клиент видит доменный DNS-сервер, то к папке можно обращаться по имени, ну или же по ip адресу. Если папка требует авторизации - выйдет окно с вводом логина и пароля, а затем менеджер файлов сохранить эти данные.

Теперь с этой папкой можно проводить операции, создавать ее ярлык на рабочий стол и тд.

2. Команда mount

Мы можем вручную примонтировать папку посредством команды mount.

Первоначально для работы с smb папками нам нужно установить пакет cifs-utils

sudo apt install cifs-utils -y

Затем создать точку монтирования. Пусть это будет папка /opt/share/all для гостевого анонимного доступа и /opt/share/domain для пользователей домена

sudo mkdir -p /opt/share/{all,domain}

ключ -p используется чтобы создать папку если она не существует. В данном примере если мы попытаемся создать папку /opt/share/all нам выйдет ошибка что папки share не существует. Данный ключ создает эту папку.

sudo chmod 777 /opt/share/{all,domain}

Мы создали необходимые папки для точки монтирования и раздали права на них.

Теперь монтируем наш сетевой ресурс. Вариант с анонимным доступом

sudo mount -t cifs //192.168.50.197/share /opt/share/all -o guest,file_mode=0777,dir_mode=0777,iocharset=utf8

Вариант с авторизацией:

sudo mount -t cifs //dc01.win.lan/domain /opt/share/domain -o username=user,password=password,file_mode=0777,dir_mode=0777,iocharset=utf8

где параметры:

-t cifs - тип файловой системы cifs

//192.168.50.197/share и //dc01.win.lan/domain - сервера с общими папками

/opt/share/all и /opt/share/domain - точки монтирования

-o опции:

username и password - учетные данные для доступа к папке. Для анонимного доступа используется параметр guest

file_mode и dir_mode - права на папки и файлы, с возможностью их изменения и удаления.

iocharset=utf8 - может пригодиться иногда при работе с русскими именами в названиях

Использовать эти команды можно как душе угодно. Добавлять в скрипты, в службы, ставить в автозагрузку. Кому как хочется.

2.5. Mount посредством fstab

Не менее полезным бывает подключение сетевой папки автоматический при старте системы. Один из способов - это подключение папки посредством добавления данных в файл /etc/fstab

Открываем файл к примеру в nano:

sudo nano /etc/fstab

И так же прописываем по шаблону: источник - куда монтировать - опции

-5

Пример записи для папки с анонимным доступом:

//192.168.50.197/share /opt/share/all cifs guest,rw,nofail,iocharset=utf8 0 0

Пример записи для папки с авторизацией:

//dc01.win.lan/domain /opt/share/domain cifs username=user,nofail,password=password,rw,iocharset=utf8 0 0

Как видите ничего особенного не поменялось, из различий только параметр rw-который также позволяет монтировать папку на чтение/запись, nofail-параметр, который позволяет системе грузиться дальше, если с сетевым ресурсом какие то проблемы (к примеру он недоступен), иначе вы можете остаться на странице загрузки с ошибкой. Возможно еще пригодится параметр vers=1.0 когда нужно присоединиться к старой шаре, которая поддерживает только первую версию smb.

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

создаем файл в каталоге root под названием .smbclient и прописываем наши учетные данные.

sudo nano /root/.smbclient

внутри файла:

username=user
password=password
domain=domain
-6

И не забудем сменить права доступа на этот файл, чтобы никто лишний не мог его прочитать.

sudo chmod 600 /root/.smbclient

И тогда запись в fstab будет иметь вид:

//dc01.win.lan/domain /opt/share/domain cifs credentials=/root/.smbclient,nofail,rw,iocharset=utf8 0 0

3. Посредством PAM mount

Автоматическое подключение smb папок возможно через модуль PAM mount. Для этого нужно установить следующие пакеты:

sudo apt install cifs-utils libpam-mount

И дальше все настройки будут производиться в файле /etc/security/pam_mount.conf.xml

Внутри xml файла нас интересует тег volume

Пример записи с гостевым доступом:

<volume user="*" fstype="cifs" server="192.168.50.197" path="share" mountpoint="/media/%(USER)/all"/>

Пример записи с авторизацией:

<volume fstype="cifs" server="dc01.win.lan" path="domain" mountpoint="/media/%(USER)/domain" options="user=%(USER),cruid=%(USER),sec=krb5i,file_mode=0770,dir_mode=0770"/>

Как видите при доступе с авторизацией мы указываем в опциях переменную %USER - пользователя который сейчас заходит в систему, а также тип авторизации sec=krb5i.
Честно говоря не получилось зайти из недоменной машины в общую папку с авторизацией. Понимаю что тут все дело в пробросе логина и пароля, но победить не смог. Если у кого то есть решение, поделитесь.

Итак файл выглядит примерно следующим образом:

-7

Согласно вики Астры:

Тег logout определяет поведение в процессе размонтирования ФС. К этому времени все процессы должны освободить точку монтирования, в противном случае им посылаются соответствующие сигналы прерывания работы.

Тег mkmountpoint отвечает за автоматическое создание и удаление точки монтирования.

Тег cifsmount определяет команду, с помощью которой монтируется указанный тип ФС.

Тег volume объявляет непосредственно параметры монтирования разделяемого файлового ресурса.

Обратите внимание: когда будете использовать pam_mount есть вероятность словить ошибку при установке пакетов.

reenter password for pam_mount

причем дальше ничего не происходит, вводи не вводи пароль.

-8

Для решения этой проблемы в файле /etc/pam.d/common-session строку:

session optional pam_mount.so
нужно заменить на строку:

session optional pam_mount.so disable_interactive

Вот все методы которые я хотел показать, для монтирования общих папок smb. Есть еще возможность монтирования через autofs, но у меня она никак не захотела взлетать. А костылить с хранением паролей в открытом виде я там очень не хотел. Поэтому опустил эту возможность.