Привет!
Рано или поздно встает вопрос подключение общих папок 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
Если клиент видит доменный 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
И так же прописываем по шаблону: источник - куда монтировать - опции
Пример записи для папки с анонимным доступом:
//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
И не забудем сменить права доступа на этот файл, чтобы никто лишний не мог его прочитать.
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.
Честно говоря не получилось зайти из недоменной машины в общую папку с авторизацией. Понимаю что тут все дело в пробросе логина и пароля, но победить не смог. Если у кого то есть решение, поделитесь.
Итак файл выглядит примерно следующим образом:
Согласно вики Астры:
Тег logout определяет поведение в процессе размонтирования ФС. К этому времени все процессы должны освободить точку монтирования, в противном случае им посылаются соответствующие сигналы прерывания работы.
Тег mkmountpoint отвечает за автоматическое создание и удаление точки монтирования.
Тег cifsmount определяет команду, с помощью которой монтируется указанный тип ФС.
Тег volume объявляет непосредственно параметры монтирования разделяемого файлового ресурса.
Обратите внимание: когда будете использовать pam_mount есть вероятность словить ошибку при установке пакетов.
reenter password for pam_mount
причем дальше ничего не происходит, вводи не вводи пароль.
Для решения этой проблемы в файле /etc/pam.d/common-session строку:
session optional pam_mount.so
нужно заменить на строку:
session optional pam_mount.so disable_interactive
Вот все методы которые я хотел показать, для монтирования общих папок smb. Есть еще возможность монтирования через autofs, но у меня она никак не захотела взлетать. А костылить с хранением паролей в открытом виде я там очень не хотел. Поэтому опустил эту возможность.