Монтирование сетевой папки windows в debian

В этом руководстве мы расскажем, как вручную и автоматически монтировать общие папки Windows в системах Linux. - BAKS.dev

В операционных системах Linux и UNIX общий ресурс Windows можно смонтировать в определенной точке монтирования в дереве локальных каталогов, используя cifsпараметр mount команды.

Общая файловая система Интернета (CIFS) — это сетевой протокол обмена файлами. CIFS является формой SMB.

Установка пакетов утилит CIFS 

Чтобы смонтировать общий ресурс Windows в системе Linux, сначала необходимо установить пакет утилит CIFS.

  • Установка утилит CIFS в Ubuntu и Debian:

    sudo apt updatesudo apt install cifs-utils
    
    
  • Установка утилит CIFS в CentOS и Fedora:

    sudo dnf install cifs-utils


    Имя пакета может отличаться в разных дистрибутивах Linux.

Монтирование удаленного общего ресурса Windows аналогично монтированию обычных файловых систем.

Сначала создайте каталог, который будет служить точкой монтирования для удаленного общего ресурса Windows:

sudo mkdir /mnt/win_share

    Запустите следующую команду как пользователь root или пользователь с правами sudo для монтирования общего ресурса:

sudo mount -t cifs -o username=<win_share_user> //WIN_SHARE_IP/<share_name> /mnt/win_share

    Вам будет предложено ввести пароль:

Password:


    В случае успеха не выводится.

Чтобы убедиться, что удаленный общий ресурс Windows успешно смонтирован, используйте команду mount или df -h.

После монтирования общего ресурса точка монтирования становится корневым каталогом смонтированной файловой системы. Вы можете работать с удаленными файлами, как если бы они были локальными файлами.

Пароль также можно указать в командной строке:

sudo mount -t cifs -o username=<win_share_user>,password=<win_share_password> //WIN_SHARE_IP/<share_name> /mnt/win_share

    Если пользователь находится в рабочей группе или домене Windows, вы можете установить его следующим образом:

sudo mount -t cifs -o username=<win_share_user>,domain=<win_domain> //WIN_SHARE_IP/<share_name> /mnt/win_share


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

Файл учетных данных имеет следующий формат:

/etc/win-credentials

username = user
password = password
domain = domain

Файл не должен быть доступен для чтения пользователям. Чтобы установить правильные разрешения и владельца , запустите:

sudo chown root: /etc/win-credentialssudo chmod 600 /etc/win-credentials

    Чтобы использовать файл учетных данных, определите его следующим образом:

sudo mount -t cifs -o credentials=/etc/win-credentials //WIN_SHARE_IP/<share_name> /mnt/win_share


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

Используйте dir_modeопцию, чтобы установить разрешение каталога и file_mode установить разрешение файла:

sudo mount -t cifs -o credentials=/etc/win-credentials,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share

    Пользователь по умолчанию и группа собственность могут быть изменены с uidи gid опциями:

sudo mount -t cifs -o credentials=/etc/win-credentials,uid=1000,gid=1000,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share


    Чтобы установить дополнительные параметры , добавьте их в виде списка через запятую после -oпараметра. Чтобы получить список всех опций монтирования, введите man mountваш терминал.

Авто монтаж 

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

/etc/fstab Файл содержит список записей , которые определяют , где , как и то , что файловая система будет смонтирована на старте системы.

Чтобы автоматически смонтировать общий ресурс Windows при запуске вашей системы Linux, определите монтирование в /etc/fstab файле. Строка должна содержать имя хоста или IP-адрес ПК с Windows, имя общего ресурса и точку монтирования на локальном компьютере.

Откройте /etc/fstabфайл в текстовом редакторе :

sudo nano /etc/fstab

    Добавьте следующую строку в файл:

/etc/fstab

# <file system>             <dir>          <type> <options>                                                   <dump>  <pass>
//WIN_SHARE_IP/share_name  /mnt/win_share  cifs  credentials=/etc/win-credentials,file_mode=0755,dir_mode=0755 0       0

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

sudo mount /mnt/win_share


mount 
Команда, будет читать содержание /etc/fstab и установить долю.

При следующей перезагрузке системы общий ресурс Windows будет смонтирован автоматически.

Команда umountотсоединяет (размонтирует) смонтированную файловую систему от дерева каталогов.

Чтобы отсоединить подключенный общий ресурс Windows, используйте umount команду с указанием либо каталога, в котором он был подключен, либо удаленного общего ресурса:

sudo umount /mnt/win_share


    Если в fstab файле CIFS есть запись в файле, удалите ее.

Команда umountне сможет отсоединить общий ресурс, когда он используется. Чтобы узнать, какие процессы обращаются к общему ресурсу Windows, используйте fuser команду:

fuser -m MOUNT_POINT


    Найдя процессы, вы можете остановить их с помощью kill команды и размонтировать общий ресурс.

Если у вас по-прежнему возникают проблемы с размонтированием общего ресурса, используйте параметр -l( --lazy), который позволяет размонтировать занятую файловую систему, как только она больше не будет занята.

sudo umount -l MOUNT_POINT

Вывод

В Linux вы можете смонтировать общий доступ к Windows, используя mount команду с cifs параметром.

Монтирование SMB не что иное как подключение сетевой папки WIndows в Linux. SMB (Server Message Block) — сетевой протокол удаленного доступа к сетевым ресурсам (файлы, папки, принтеры и т.п.). В первой версии протокола был известен также как CIFS (Common Internet File System). Протоком SMB повсеместно используется во всех ОС Microsoft Windows.

В современных дистрибутивах Linux уже можно совершенной спокойно путешествовать по сетевым дискам. Но куда удобнее если смонтировать сетевой диск сразу в папку, да еще и на рабочем столе, красота. Я создал папку с общим доступом на сервере Hyper-V, её и буду монтировать. Монтирование SMB буду делать под специально заведенным пользователем, дабы не светить пароль админа.

Монтируемая папка

Монтируемая директория доступна только администраторам и пользователю smb (создан специально для монтирования). Сделать общую папку на сервере Windows можно двумя способами: 1 — через свойства папки; 2 — через Powershell. Через свойства папки проще и быстрее как для новичка.

Но в моем случае с сервером HyperV 2019 сработал только второй способ, через Powershell.

New-SmbShare -Name "smb_mount" -Path "F:smb_mount" -FullAccess "Administrator", "smb"

Данной командой я сделал общей папку расположенную по пути F:smb_mount и присвоил ей имя smb_mount. Права на доступ к папке выдал пользователю Administrator и smb.

Общая папка у меня доступна по пути \hvs19smb_mount, но монтировать я буду ее по ip адресу. Принципиального вопроса как монтировать нет, просто не всегда есть возможность использовать имя.

С монтируемой папкой закончили, создадим папку куда будем монтировать. Я создал папку в /opt и назвал её F (по имени диска где лежит монтируемая папка) для удобства.

Установим набор утилит для монтирования SMB

Для Ubuntu (и прочих Debian`ов)

sudo apt-get install cifs-utils

Для Centos 8 (и прочих RPM дистрибутивов на YUM)

sudo yum install cifs-utils
Монтирование SMB

Все необходимые папки мы создали, теперь приступим к монтированию файловой системы.

sudo mount -t cifs -o username=smb,password=пароль //192.168.1.110/smb_mount /opt/F

Пройдемся по параметрам:

  • -t cifs — тип файловой системы cifs (полностью совместим с SMB)
  • username — пользователь у которого есть доступ к монтируемой папке (на сетевом диске). Если разрешено, можно использовать гостя, без пароля. В таком случае указываем username=guest
  • password — пароль от учетной записи этого пользователя
  • //192.168.1.110/smb_mount — общая папка на сервере которую монтируем
  • /opt/F — папка куда монтируем.

Посмотрим что все получилось, проверим свободное место в сетевой папке

Можно использовать дополнительные возможности при монтировании, используя ключи после параметра -o. Вот некоторые из них

  • rw — запись и чтение
  • ro — только чтение
  • iocharset=utf8 — в данной кодировке будет выводится информация;
  • codepage=cp866 — кодировка используемая на сервере с общей папкой. Обычно Windows устанавливает кодировку cp866.
  • vers=3.0 — принудительно указать версию подключения SMB протокола. Для безопасного подключения используйте последнюю версию.

Используя команду mount мы монтируем папку в ручном режиме и после перезагрузки монтирования не произойдет. Для автоматического монтирования папки читаем следующий раздел.

Автоматическое монтирование SMB

Для постоянного монтирования папке при старте системы необходимо внести изменения в файл /etc/fstab. При монтировании сетевого диска с SMB используется пароль. Для большей сохранности не будем указывать его в файле fstab, а сохраним в директории root.

Создадим файл с учетными данными

Добавим в файл строки: имя пользователя, пароль, домен (если используется). У меня домена нет, поэтому добавлю только имя и пароль

username=smb
password=пароль
domain=mydomain

Откроем файл /etc/fstab для редактирования

Добавим новую строку в конец файла

//192.168.1.110/smb_mount /opt/F   cifs   user,rw,credentials=/root/.cifsmnt 0 0

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

Разберем указанные параметры

  • //192.168.1.110 — ip адрес сервера где находится сетевая папка
  • /smb_mount — сетевая папка на указанном выше сервере
  • /opt/F — папка на локальном компьютере куда будем монтировать сетевую папку
  • cifs — тип монтируемой файловой системы
  • user — разрешение монтировать для любого пользователя
  • rw — разрешения на чтение/запись на диск при монтировании
  • credentials — путь к файлу с данными учетной записи используемых для подключения по SMB
  • 0 — не использовать дамп
  • 0 — не проверять файловую систему при старте программой fsck
Права на папки и файлы

Примонтированный диск по умолчанию монтируется от root и разрешает запись на диск только под ним. Рассмотрим опции позволяющие изменить доступ на примонтированные папки и файлы. Также рассмотрим настройки по смене владельца смонтированной папки.

  • uid — задает владельца каталога. Узнать uid пользователей можно в файле /etc/passwd
  • gid — задает группу владельца каталога. Узнать gid групп можно в файле /etc/passwd
  • file_mode=0777 — права на доступ к файлам. 0777 — разрешено запись/чтение всем.
  • dir_mode=0777 — права на доступ к папкам. 0777 — разрешено запись/чтение всем.

Пример записи в файле /etc/fstab монтирования от моего пользователя (не root) с полным доступом ко всем файлам и папкам

//192.168.1.110/smb_mount /opt/F   cifs   user,rw,credentials=/root/.cifsmnt,file_mode=0777,dir_mode=0777,uid=1000,gid=1000 0 0
Размонтирование SMB

Размонтировать сетевую папку SMB можно используя команду umount

В параметрах команды umount указываем директорию куда была смонтирована сетевая папка. В моем случае это /opt/F

Если смонтированная файловая система сейчас занята, появится сообщение umount: target is busy . В таком случае размонтировать получиться с ключом -l

Решение проблем монтирования

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

grep "cifs" /var/log/syslog

В системном журнале будет указана причина ошибки монтирования. Как пример не верный логин/пароль, не установленные утилиты cifs и т.п.

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

В сети 2 машины. Одна из них винда с папкой shared-folder доступной по сети, вторая — Debian 10. Задача: расшарить на unix указанный каталог, сделав из него сетевой диск. Рассмотрим 3 способа:

  • Монтирование сетевого диска из командной строки
  • Монтирование сетевого диска указанного в /etc/fstab
  • Монтирование сетевого диска из systemd

Все операции выполняем под root. В первую очередь в Linix создадим каталог куда будем монтировать /mnt/shared-folder и установим необходимые пакеты

mkdir /mnt/sharedfolder

apt install cifsutils y

Создадим файлик с паролем и логином к сетевому ресурсу и поставим на него нужные права от чужих глаз

echo e «username=youusernamenpassword=12345» > /etc/samba/passwd

chmod 0600 /etc/samba/passwd

Монтирование сетевого диска из командной строки

mount t cifs //192.168.56.1/sharefolder /mnt/sharefolder o noexec,noperm,iocharset=utf8,credentials=/etc/samba/passwd

mount && df

umount /mnt/sharefolder

Смонтировали — посмотрели что смонтировали — размонтировали

Монтирование сетевого диска указанного в /etc/fstab

В данном случае после ребута наш сетевой диск будет монтирован автоматически. Открываем /etc/fstab

Добавляем строку

//192.168.56.1/share-folder /mnt/share-folder cifs noexec,noperm,iocharset=utf8,credentials=/etc/samba/passwd 0 0

Монтируем — смотрим — размонтируем:

mount /mnt/sharefolder

mount && df

umount /mnt/sharefolder

Ребут сервера: reboot

Смотрим: mount && df

Смонтировано. Пока оставим смонтированным и перейдем к следующему способу.

Монтирование сетевого диска из systemd

Посмотрим на этот файлик в каталоге /run/systemd/generator/

cat /run/systemd/generator/mntsharex2dfolder.mount

Этот юнит нам автоматически сгенерировал systemd-fstab-generator из указанного нами в /etc/fstab

# Automatically generated by systemd-fstab-generator

[Unit]

SourcePath=/etc/fstab

Documentation=man:fstab(5) man:systemdfstabgenerator(8)

Before=remotefs.target

[Mount]

What=//192.168.56.1/sharefolder

Where=/mnt/sharefolder

Type=cifs

Options=noexec,noperm,iocharset=utf8,credentials=/etc/samba/passwd

Копируем его:

cp «/run/systemd/generator/mnt-sharex2dfolder.mount» «/lib/systemd/system/mnt-sharex2dfolder.mount»

Обратите внимание, что переименовывать юнит файл нельзя, генератор нам добавил хренов бекслеш и закодировал дефис в имени, что вызовет неказистость в будущих командах systemctl, но ничего не поделать. Единственный выход — использовать другое имя для каталога монтирования /mnt/share-folder Поэтому в командах либо заключаем имя в кавычки, либо беслешим бекслеш как тут:

cp /run/systemd/generator/mntsharex2dfolder.mount /lib/systemd/system/mntsharex2dfolder.mount

Открываем юнит и редактируем:

nano /lib/systemd/system/mntsharex2dfolder.mount

Это нужно добавить внизу:

[Install]

WantedBy=remotefs.target

А это права:

chmod 0600 /lib/systemd/system/mntsharex2dfolder.mount

Не забываем размонтировать диск и отредактировать fstab убрав строку монтирования

umount /mnt/sharefolder

nano /etc/fstab

Перезагружаем конфиги systemctl

Готово, управляем сетевым диском из systemd

systemctl status mntsharex2dfolder.mount

systemctl isenabled mntsharex2dfolder.mount

systemctl enable mntsharex2dfolder.mount

systemctl start mntsharex2dfolder.mount

systemctl stop mntsharex2dfolder.mount

systemctl disable mntsharex2dfolder.mount

  • Посмотрели статус
  • Проверили включена ли автозагрузка(монтирование при загрузке)
  • Включили автозагрузку(монтирование при загрузке)
  • Смонтировали сетевой диск
  • Размонтировали сетевой диск
  • Отключили автозагрузку(монтирование при загрузке)

CIFS (Common Internet File System) – это популярный протокол обмена файлами в Интернете. Этот протокол и позволит пользователям ОС Linux получить доступ к общей папке Windows.

CIFS – это реализация SMB (Server Message Block) – протокола, используемого для совместного использования сетевых файлов. Но он устарел.

В этой статье мы по шагам пройдем все этапы установки и настройки CIFS, чтобы подключиться к сетевому ресурсу Windows на ОС Linux.

Установка CIFS

Сейчас мы установим пакет cifs-utils на Ubuntu Linux (точно так же можно сделать на всех Debain-подобных ОС).

$ sudo apt-get update
$ sudo apt-get install cifs-utils

Монтируем Windows Share (сетевой ресурс)

Сейчас мы разберем на примерах, как монтировать общую папку Windows вручную и автоматически.

Создадим на нашем Linux директорию, к которой мы будем монтировать сетевой ресурс. Назовем ее myshare и расположена она будет в каталоге /mnt

$ sudo mkdir /mnt/myshare

Сетевой ресурс (шара) Windows может быть примонтирован к ОС Ubuntu или Debian с помощью следующей команды:

$ sudo mount -t cifs -o username=user,password=Passw0rd //WINDOWS_HOST_IP/share /mnt/myshare

Где:

WIN_HOST_IP – это IP адрес хоста Windows, на котором расположена общая папка

share – имя сетевого ресурса

user – наш пользователь и Passw0rd – пароль с которыми мы подключемся к шаре.

Если пользователь доменный, то необходимо в опциях (-o) указать домен.

$ sudo mount -t cifs -o username=user,password=Passw0rd,domain=domain_name //WIN_HOST_IP/share /mnt/myshare

По-умолчанию сетевой ресурс монтируется с полными правами (rwx или 777). Если Вы хотите установить иные права, используйте опции dir_mode и file_mode.

$ sudo mount -t cifs -o username=user,password=Passw0rd,dir_mode=0755,file_mode=0755 //WIN_HOST_IP/share /mnt/myshare

Так же Вы можете установить владельцев uid (id пользователя) и gid (id группы).

$ sudo mount -t cifs -o username=user,password=Passw0rd,uid=1000,gid=1000,dir_mode=0755,file_mode=0755 //WIN_HOST_IP/share /mnt/myshare

Если после выполнения предыдущих команд Вы не получили никаких ошибок, то можете с помощью команды df -h убедиться, что сетевой ресурс успешно примонтирован к нашему ПК на Linux. В примере WIN_HOST_IP = 192.168.1.100 и имя общей папки share

$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
udev                       3,9G     0  3,9G   0% /dev
tmpfs                      787M  2,2M  785M   1% /run
/dev/sda2                  450G   23G  405G   6% /
tmpfs                      3,9G  705M  3,2G  18% /dev/shm
tmpfs                      5,0M  4,0K  5,0M   1% /run/lock
tmpfs                      3,9G     0  3,9G   0% /sys/fs/cgroup
//192.168.1.100/share  1000G  108G  82G   11% /mnt/myshare

Безопасность учетных данных при монтировании через CIFS

В этом разделе опишем, как лучше всего передавать учетные данные (имя пользователя, пароль, домен) при монтировании сетевого ресурса к ОС на базе Линукс.

Создайте файл с учетными данными для cifs: /etc/cifs-credentials

Внутрь поместите следующее содержимое:

username=user
password=Passw0rd
domain=domain_name

Задайте права для этого файла:

$ sudo chmod +rw /etc/cifs-credentials

Теперь мы можем подключить общую папку такой командой:

$ sudo mount -t cifs -o credentials=/etc/cifs-credentials //WIN_HOST_IP/share /mnt/myshare

В примерах выше, после того, как Вы перезагрузите свой ПК, сетевой ресурс не примонтируется. Поэтому сделаем так, чтобы шара подключалась автоматически. В Linux это делается через файл /etc/fstab. Откройте этот файл любимым редактором.

$ sudo vim /etc/fstab

И добавьте такую строку:

//WIN_HOST_IP/share /mnt/myshare cifs credentials=/etc/cifs-credentials,file_mode=0755,dir_mode=0755 0 0

Следующей командой запустим монтирование всех точек, описанных в /etc/fstab

$ sudo mount -a

Теперь наш удаленный сетевой ресурс будет доступен даже после перезагрузки.

Как размонтировать общую папку CIFS

Размонтирование производится таким же способом, как и обычно мы жто делаем с дисками:

$ sudo umount /mnt/myshare

Часто бывает так, что сетевой ресурс занят каким-то процессом и тогда Вы получите ошибку при попытке размонтирования, тогда запустите команду с ключем -l (–lazy)

$ sudo umount -t cifs -l /mnt/myshare

Итог

Итак, в этой статье мы рассмотрели, как быстро примонтировать удаленную сетевую папку, которая находится на хосте с Windows, к нашему хосту на Linux с помощью CIFS. Если у Вас остались какие-либо вопросы, пожалуйста, пишите в комментариях.

В этой статье мы рассмотрим, как в Linux смонтировать общую сетевую папку, расположенную на хосте Windows. В Windows для доступа к общим сетевым папкам используется протокол SMB (Server Message Block, ранее назывался CIFS, Сommon Internet File System). В Linux для доступа к сетевым папкам Windows по протоколу SMB можно использовать клиент cifs-utils или Samba.

    Содержание:

  • Смонтировать сетевую папку в Linux с помощью cifs-util
  • Linux: подключиться к сетевой папке с помощью клиента samba

Совет. Для доступа к сетевым папкам по SMB/CIFS используется порт TCP/445. Для разрешения имени используются UDP 137, 138 и TCP 139. Если эти порты закрыты, вы сможете подключиться к сетевой папке Windows только по IP адресу.

Смонтировать сетевую папку в Linux с помощью cifs-util

Вы можете смонтировать сетевую папку, находящуюся на Windows хосте, с помощью утилит из пакета cifs-util. Для установки пакета выполните команду:

  • В Ubuntu/Debian: apt-get install cifs-utils
  • В CentOS/Oracle/RHEL: dnf install cifs-utils

Теперь вы можете смонтировать сетевую папку вручную с помощью команды:

mount.cifs //192.168.200.30/docs /mnt

В предыдущем примере подразумевалось, что к общей сетевой папке на Windows предоставлен анонимный доступ. Если для доступа нужно аутентифицироваться под пользователем, используйте команду:

mount.cifs //192.168.200.30/docs /mnt -o user=localuser1

Если для подключения нужно использоваться доменную учетную запись пользователя:

mount.cifs //192.168.200.30/docs /mnt -o user=aivanov,domain=vmblog.ru

Совет. Если в имени сетевой шары есть пробелы, нужно заменить их на 40:

mount.cifs //192.168.200.30/shared40docs /mnt -o user=localuser1

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

vim /root/.smbshare

Укажите имя пользователя, пароль и домен AD:

username=avvanov
password=Pass123-y
domain=vmblog.ru

И добавьте строку подключения SMB каталог в файл /etc/fstab

//192.168.200.30/docs /mnt cifs user,rw,credentials=/root/.smbshare 0 0

Параметр rw указывает, что папка будет доступна на чтение и запись.

Вы можете указать версию протокола SMB, которую нужно использовать для подключения (версия SMB 1.0 считается небезопасной и отключена по-умолчанию в современных версиях Windows). Чтобы смонтировать сетевую папку по протоколу SMB 3.0, используйте строку:

//192.168.200.30/docs /mnt cifs user,rw,credentials=/root/.smbshare,vers=3.0 0 0

Если на стороне хоста Windows используется несовместимая (старая версия) SMB, при подключении появится ошибка:

mount error(112): Host is down

Чтобы сразу смонтировать сетевую папку, выполните:

mount -a

Linux: подключиться к сетевой папке с помощью клиента samba

Установите в Linux клиент samba:

  • В Ubuntu/Debian: sudo apt-get install smbclient
  • В CentOS/Oracle/RHEL: dnf install smbclient

Разрешите доступ для клиента, добавив правило в файервол:

firewall-cmd --add-service samba-client --permanent; firewall-cmd –reload

Для вывода всех SMB ресурсов в локальной сети:

smbtree -N

Чтобы обнаружить список доступных SMB шар на удаленном хосте под определенной учетной записью, выполните команду:

smbclient –L \\192.168.200.30 –U 'administrator'

подключение сетевой папки в linux с помощью smbclient

Чтобы вывести список опубликованных в Windows сетевых принтеров:

net share -l

Для подключения к сетевой папке Windows используется команда:

smbclient -U usernam1 \\192.168.200.30\shared_docs

Для анонимного доступа:

smbclient -U Everyone \\192.168.200.30\shared_docs

При использовании команды smbclient может появиться ошибка:

Unable to initialize messaging context
smbclient: Can't load /etc/samba/smb.conf - run testparm to debug it

Чтобы исправить ошибку, создайте файл /etc/samba/smb.conf.

В операционных системах Linux и UNIX общий ресурс Windows можно cifs к определенной точке монтирования в локальном дереве каталогов с cifs опции cifs команды mount .

Common Internet File System (CIFS) — это сетевой протокол обмена файлами. CIFS — это форма SMB.

В этом руководстве мы объясним, как вручную и автоматически монтировать общие ресурсы Windows в системах Linux.

Установка пакетов утилит CIFS

Чтобы смонтировать общий ресурс Windows в системе Linux, сначала необходимо установить пакет утилит CIFS.

  • Установка утилит CIFS в Ubuntu и Debian:

     sudo apt update sudo apt install cifs-utils
  • Установка утилит CIFS на CentOS и Fedora:

     sudo dnf install cifs-utils

Имя пакета может отличаться в зависимости от дистрибутива Linux.

Монтирование общего ресурса CIFS Windows

Подключение удаленного общего ресурса Windows аналогично монтированию обычных файловых систем.

Сначала создайте каталог, который будет точкой монтирования для удаленного общего ресурса Windows:

sudo mkdir /mnt/win_share

Выполните следующую команду от имени пользователя root или пользователя с привилегиями sudo, чтобы смонтировать общий ресурс:

sudo mount -t cifs -o username=<win_share_user> //WIN_SHARE_IP/<share_name> /mnt/win_share

Вам будет предложено ввести пароль:

Password:

В случае успеха вывод не производится.

Чтобы убедиться, что удаленный общий ресурс Windows успешно смонтирован, используйте команду mount или df -h .

После монтирования общего ресурса точка монтирования становится корневым каталогом смонтированной файловой системы. Вы можете работать с удаленными файлами, как если бы они были локальными.

Пароль также можно указать в командной строке:

sudo mount -t cifs -o username=<win_share_user>,password=<win_share_password> //WIN_SHARE_IP/<share_name> /mnt/win_share

Если пользователь находится в рабочей группе или домене Windows, вы можете установить его следующим образом:

sudo mount -t cifs -o username=<win_share_user>,domain=<win_domain> //WIN_SHARE_IP/<share_name> /mnt/win_share

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

Файл учетных данных имеет следующий формат:

/etc/win-credentials

username=user
password=password
domain=domain

Файл не должен быть доступен для чтения пользователям. Чтобы установить правильные разрешения и владение , запустите:

sudo chown root: /etc/win-credentialssudo chmod 600 /etc/win-credentials

Чтобы использовать файл учетных данных, определите его следующим образом:

sudo mount -t cifs -o credentials=/etc/win-credentials //WIN_SHARE_IP/<share_name> /mnt/win_share

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

Используйте параметр dir_mode чтобы установить права file_mode к каталогу, и file_mode чтобы установить права file_mode к файлу:

sudo mount -t cifs -o credentials=/etc/win-credentials,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share

Владение пользователем и группой по умолчанию можно изменить с помощью параметров uid и gid :

sudo mount -t cifs -o credentials=/etc/win-credentials,uid=1000,gid=1000,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share

Чтобы установить дополнительные параметры , добавьте их в виде списка, разделенного запятыми, после параметра -o . Чтобы получить список всех параметров монтирования, введите в терминале man mount .

Автоматический монтаж

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

Файл /etc/fstab содержит список записей, определяющих, где, как и какая файловая система будет монтироваться при запуске системы.

Чтобы автоматически монтировать общий ресурс Windows при запуске системы Linux, определите монтирование в /etc/fstab . Строка должна включать имя хоста или IP-адрес ПК с Windows, имя общего ресурса и точку монтирования на локальном компьютере.

Откройте файл /etc/fstab текстовом редакторе :

sudo nano /etc/fstab

Добавьте в файл следующую строку:

/etc/fstab

# <file system>             <dir>          <type> <options>                                                   <dump>  <pass>
//WIN_SHARE_IP/share_name  /mnt/win_share  cifs  credentials=/etc/win-credentials,file_mode=0755,dir_mode=0755 0       0

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

sudo mount /mnt/win_share

Команда mount прочитает содержимое /etc/fstab и смонтирует общий ресурс.

В следующий раз, когда вы перезагрузите систему, общий ресурс Windows будет подключен автоматически.

Отключение общего ресурса Windows

Команда umount отсоединяет (размонтирует) смонтированную файловую систему от дерева каталогов.

Чтобы отсоединить смонтированный общий ресурс Windows, используйте команду umount за которой следует либо каталог, в котором он был смонтирован, либо удаленный общий ресурс:

sudo umount /mnt/win_share

Если для CIFS-монтирования есть запись в fstab , удалите ее.

Команда umount не сможет отсоединить общий ресурс, когда он используется. Чтобы узнать, какие процессы обращаются к общему ресурсу Windows, используйте команду fuser :

fuser -m MOUNT_POINT

Как только вы найдете процессы, вы можете остановить их с помощью команды kill и отключить общий ресурс.

Если у вас все еще есть проблемы с --lazy ресурса, используйте параметр -l ( --lazy ), который позволяет вам отключить занятую файловую систему, как только она больше не будет занята.

sudo umount -l MOUNT_POINT

Выводы

В Linux вы можете cifs к Windows с помощью команды mount с опцией cifs .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Иногда, при организации совместных сетей между Windwos и Linux системами, в последних может появиться необходимость монтирования расшаренных SMB-ресурсов прямо к файловой системе. Прежде всего такая необходимость появляется при использовании легковесных рабочих сред (XFCE, OpenBox, LXDE и др), файловые менеджеры которых не поддерживают прямой доступ к samba.

Например, в среде Gnome доступ к ресурсу Windows можно получить прямо из файлового менеджера Nautilus, введя в адресной строке путь вида smb://192.168.0.11/ (где вместо необходимого ip-адреса также может быть просто указано сетевое имя windows-системы). Но многие другие файловые менеджеры (к примеру, быстрый и удобный PCMan File Manager до определённой версии) не поддерживают такой возможности, поэтому универсальным решением становится монтирование SMB к конкретному пути вашей файловой системы, в результате вы получите доступ к расшаренному ресурсу удаленной системы точно так же, как вы его получаете к своим дискам. Для этой цели нам потребуется установленный пакет cifs-utils, в Ubuntu и Debian установить его можно командой:

sudo apt-get install cifs-utils

В Fedora, CentOS и других RedHat based дистрибутивах:

sudo yum install cifs-utils

Также, как заметили в комментариях, рекомендуется установить пакеты ntfs-3g и ntfs-config, если они у вас ещё не установлены.

Теперь для начала давайте разберем как монтировать расшаренные папки вручную. Потребуется создать путь куда будем монтировать SMB-папку, пусть это, к примеру, будет /media/sharefolder:

sudo mkdir /media/sharefolder

Вот такой командой можно примонтировать папку, требующую авторизации по логину и паролю:

sudo mount -t cifs //192.168.0.11/share /media/sharefolder -o username=windowsuser,password=windowspass,iocharset=utf8,file_mode=0777,dir_mode=0777

где вместо //192.168.0.11/share – ip-адрес и имя необходимой общей папки (если имя расшаренной папки содержит пробел, то необходимо заключить весь путь в кавычки, как это показано в следующем примере), /media/sharefolder – путь куда будет монтироваться ресурс, windowsuser – имя пользователя с необходимыми правами доступа к этому ресурсу Windows, windowspass – пароль этого пользователя.

Если необходимая папка не требует обязательной авторизации, то подключить ресурс можно такой командой:

sudo mount -t cifs "//192.168.0.11/общие документы" /media/sharefolder -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777

Если гостевой доступ к необходимой папке включен только в режиме чтения, то будет достаточно такой команды:

sudo mount -t cifs //192.168.0.11/общие /media/sharefolder -o guest,iocharset=utf8

При удачном выполнении этих команд не должно произойти никакого уведомления – можете смело проверять как примонтировалась папка перейдя по вашему пути (в нашем примере – /media/sharefolder).
Отмонтируется папка командой:

sudo umount /media/sharefolder

Для того чтобы осуществить автомонтирование таких папок нам придется отредактировать системный файл fstab. Также, если доступ к необходимому windows-ресурсу требует обязательной авторизации, то потребуется предварительно создать файл, в котором будут прописаны логин и пароль доступа (сделать это можно текстовым редактором nano):

sudo nano /root/.smbcredentials

В этот новый файл добавьте две строки:

username=windowsuser
password=windowspass

где, соответственно, windowsuser – имя пользователя с необходимыми правами доступа к ресурсу Windows, windowspass – пароль этого пользователя. Измените права созданного файла так, что редактировать и смотреть его смог только root, то есть сама система:

sudo chmod 700 /root/.smbcredentials

Сохраните изменения и переходите к редактированию файла /etc/fstab:

sudo nano /etc/fstab

И здесь в самом конце добавьте строку типа:

//192.168.0.11/share /media/sharefolder cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

Если авторизации по имени и паролю не требуется, а требуется только гостевой доступ, то создавать файл .smbcredentials не потребуется, этот шаг можно было пропустить и сразу в /etc/fstab добавить строку:

//192.168.0.11/общие40документы /media/sharefolder cifs guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

Обратите внимание, что здесь если ваша папка содержит пробелы, то вариант аналогичный командной строке – заключении пути в кавычки – не поможет, для того, чтобы fstab понял пробелы – их необходимо заменить на четыре символа: 40
И, соответственно, если требуется только лишь гостевой доступ в режиме чтения к windows-папке, то будет достаточно такой строки:

//192.168.0.11/общие /media/sharefolder cifs guest,iocharset=utf8 0 0

Для того, чтобы проверить корректно ли монтируется shared-папка из fstab без перезагрузки нужно выполнить такую команду:

sudo mount -a

Также к этому стоит добавить, что если вы хотите получать доступ к windows-шаре не через ip-адрес, а через имя машины, то вам потребуется установить winbind, в Debian-based:

sudo apt-get install winbind

Или в RedHat-based системах:

sudo yum install samba-winbind

После этого отредактируйте файл /etc/nsswitch.conf:

sudo nano /etc/nsswitch.conf

Где в строке:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

перед dns добавьте wins, то есть после редактирования она должна выглядеть вот так:

hosts: files mdns4_minimal [NOTFOUND=return] wins dns mdns4

После перезагрузки для получения доступа к windows-ресурсу через CIFS можно будет указывать не только ip, но и сетевое имя windows-ресурса (netbios name). Но мы всеже рекомендуем использовать непосредственно ip-адрес (как было описано в статье) – к нему обращение идет напрямую, быстрее.

Также стоит отметить, что таким образом можно монтировать только конкретные общие папки (например: //192.168.0.11/share), но не весь windows-ресурс целиком (то есть просто: //192.168.0.11).

Обновлено Обновлено: 14.07.2021
Опубликовано Опубликовано: 18.07.2016

Что такое Linux и CIFS простыми словами.

Работа с общими папками Windows происходит с использованием протокола CIFS (SMB). Все примеры в данном руководстве выполняются на Linux Ubuntu и CentOS.

Подготовительная работа
Синтаксис mount
Ручное монтирование
Автоматическое монтирование
Примеры

Подготовка

Установка пакетов

Для монтирования общей папки необходимо установить набор утилит для работы с CIFS.

CentOS:

yum install cifs-utils

Ubuntu:

apt-get install cifs-utils

Сетевые порты

Если мы будем монтировать сетевую папку, сервер которой находится за брандмауэром, необходимо открыть следующие порты:

  • 137/UDP
  • 138/UDP
  • 139/TCP
  • 445/TCP

Синтаксис

mount.cifs <папка на сервере> <во что монтируем> <-o опции>

* вместо mount.cifs можно написать mount -t cifs.

Пример:

mount.cifs //192.168.1.1/public /mnt

* простой пример монтирования папки public на сервере 192.168.1.1 в локальный каталог /mnt.

Ручное монтирование

Теперь монтирование можно выполнить следующей командой:

mount.cifs //192.168.1.10/share /mnt -o user=dmosk

* в данном примере будет примонтирован каталог share на сервере 192.168.1.10 в локальную папку /mnt под учетной записью dmosk.

То же самое, с использованием домена:

mount.cifs //192.168.1.10/share /mnt -o user=dmosk,domain=dmosk.local

Автоматическое монтирование CIFS через fstab

Для начала создаем файл, в котором будем хранить данные авторизации при подключении к общей папке:

vi /root/.smbclient

И добавляем в него данные следующего вида:

username=dmosk
password=dPassw0rd
domain=dmosk.local

* в этом примере создана пара логин/пароль — dmosk/dPassw0rddomain указывать не обязательно, если аутентификация выполняется без него.

Теперь открываем конфигурационный файл fstab:

vi /etc/fstab

и добавляем в него следующее:

//192.168.1.10/share /mnt cifs user,rw,credentials=/root/.smbclient 0 0

* в данном примере выполняется монтирование общей папки share на сервере с IP-адресом 192.168.1.10 в каталог /mnt. Параметры для подключения — user: позволяет выполнить монтирование любому пользователю, rw: с правом на чтение и запись, credentials: файл, который мы создали на предыдущем шаге.

Чтобы проверить правильность настроек, вводим следующую команду:

mount -a

Примеры использования опций

Версии SMB

Если на стороне Windows используется старая или слишком новая версия протокола SMB, при попытке монтирования мы можем получить ошибку mount error(112): Host is down. Чтобы это исправить, указываем версию:

mount.cifs //192.168.1.10/share /mnt/ -o vers=1.0

* монтирование по протоколу SMB1.0

Монтирование от гостевой учетной записи

Если сервер принимает запросы без логина и пароля, то клиент подключается, как гость:

mount.cifs //192.168.1.10/share /mnt -o guest

или в fstab:

//192.168.1.10/share    /mnt    cifs    guest    0 0

Права на примонтированные каталоги

При монтировании папки мы можем указать определенные права:

mount.cifs //192.168.1.10/share /mnt -o file_mode=0777,dir_mode=0777

Для указания владельца, который будет назначен для примонтированного каталога, используем:

 mount.cifs //192.168.1.10/share /mnt -o uid=33,gid=33

* чтобы посмотреть идентификаторы пользователя, вводим id -u <имя пользователя> и id -g <имя группы>.

Понравилась статья? Поделить с друзьями:
  • Монтирование сетевого диска windows в linux
  • Монтирование папки как диска windows 10
  • Монтирование общей папки windows в linux
  • Монтирование образа диска mdf windows 10
  • Монтирование образа диска iso windows 10 программы