====== Подключение сетевых SMB ресурсов в Linux ======
===== Установка необходимых пакетов =====
Для дальнейшей работы с нам потребуется пакет **cifs-utils** установить его можно следующей командой
yum install cifs-utils -y
===== Команда mount.cifs =====
mount -t cifs -o username=user,password=password,domain=domain_name //server/share /local/folder/path
**username=** имя пользователя, от имени которого производится монтирование.\\
**password=** пароль пользователя, от имени которого производится монтирование.\\
**domain=** имя домена, в котором находится пользователь.\\
Не требуется указывать домен, если пользователь локальный.
===== Монтирование через fstab =====
Предыдущий метод подходит для разового монтирования шары или проверки настроек при настройке монтирования через **fstab**. Данный метод является более предпочтительным, т.к должен автоматически подключать сетевые ресурсы при перезагрузке сервера.\\
Для того чтобы подключить сетевые ресурсы данным способом необходимо отредактировать файл **/etc/fstab** дописав в него строку монтирования ресурса. Выглядеть строка может так:
//server/share /mount/folder cifs rw,username=user,password=pass,noauto,iocharset=cp1251,file_mode=0777,dir_mode=0777,user 0 0
Собственно по своей сути данная строчка является аналогом команды mount.cifs стоит так же обратить внимание, на то, что можно указать кодировку для имен файлов и папок смонтированного сетевого ресурса, чтобы не было проблем с русскими названиями **iocharset=cp1251**. Так же отмечу, что опция **noauto** должна восстанавливать смонтированный сетевой ресурс в том случае, если он "отвалился", но к нему обратились. так же здесь можно указать опции монтирования **file_mode=** и **dir_mode=** которые определят маску прав доступа к папке, в которую смонтирован сетевой ресурс.
==== Монтирование с использование credetials ====
Показанный выше способ монтирования не является безопасным, т.к любой пользователь сервера может прочитать файл **/etc/fstab**, в связи с чем рекомендуется использовать монтирование с помощью **credentials**.\\
**credentials** - это по сути текстовый файл содержащий в себе данные пользователя для подключения.\\
Доступ к такому файлу можно ограничить для других пользователей, чтобы они не могли узнать логин и пароль (в случае если злоумышленники получили доступ к рядовому пользователю linux. Файл можно расположить например в директории root либо ограничить к нему доступ только для текущего пользователя, чтобы не смогли прочесть другие.
Выглядит файл следующим образом:
username=user
password=pass
domain=domain_name
Для ограничения доступа к нему только текущего пользователя можно использовать команду:
chmod 600 /path/to/file
Имя файла может быть произвольным. в таком случае строка монтирования в fstab будет выглядеть так:
//filesrv-2/linuxbackup /backup cifs rw,credentials=/root/.smbcredentials,noauto,iocharset=cp1251,file_mode=0777,dir_mode=0777,user 0 0
Обратите внимание, что имя пользователя, пароль и имя домена более не указываются явно в файле.
===== Монтирование с помощью systemd unit =====
Данный способ монтирования является наиболее предпочтительным, т.к. при нем доступность сетевого ресурса проверяется автоматически и так же автоматически будет восстановлено подключение.
Для того, чтобы воспользоваться данным методом необходимо создать 2 файла в **/etc/systemd/system**.
==== /etc/systemd/system/mnt-myshare.mount ====
Обратите внимание, что имя файла лучше всего создавать по аналогии с монтируемым ресурсом или папкой, в которую вы его монтируете. **mnt-myshare** служит только для примера
[Unit]
Description=Mount Share at boot
[Mount]
What=//server/share
Where=/mount/folder
Options=rw,credentials=/root/.smbcredentials,noauto,iocharset=cp1251
Type=cifs
TimeoutSec=30
[Install]
WantedBy=multi-user.target
==== /etc/systemd/system/mnt-myshare.automount ====
[Unit]
Description=Automount my-share
[Automount]
Where=/mount/folder
[Install]
WantedBy=multi-user.target
После создания файлов необходимо перезапустить демона командой: systemctl daemon-reload
и включить в автозагрузку для автоматического монтирования ресурса при доступе к нему командой:
systemctl enable mnt-myshare.automount && systemctl start mnt-myshare.automount