Монтирование расшаренных сетевых папок в Ubuntu
Файловая система CIFS, встроенная в ядро Linux — это предпочтительный метод для монтирования расшаренных сетевых ресурсов SMB/CIFS. CIFS (сокр. от англ. Common Internet File System, Единая Файловая Система Интернета) — сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия.
CIFS VFS является виртуальной файловой системой для Linux, обеспечивающей доступ к серверам и устройствам хранения, совместимым с версией 1.0 спецификации CIFS SNIA или поздней. Популярные серверы, такие как Самба, Windows 2000, Windows XP и многие другие поддерживают CIFS по умолчанию.
VFS CIFS оказывает некоторую поддержку для более старых серверов, основанных на более примитивном SMB (Server Message Block) протоколе (Вы также можете использовать файловую систему Linux smbfs в качестве альтернативы для доступа к ним). CIFS VFS была разработана, чтобы использовать продвинутые сетевые особенности файловой системы, такие как захват, Unicode (передовая интернационализация), hardlinks, dfs (иерархическое, реплицируемое пространство имени), распределенное кэширование и использует родные имена TCP (а не RFC1001, названия Netbios). В отличие от некоторых других сетевых файловых систем, вся ключевая сетевая функция включая идентификацию обеспечена в ядре, начиная с версии 2.5.42.
Файловая система CIFS поддерживается набором утилит пространства пользователя. Тот пакет инструментов называют CIFS-utils. Эти инструменты были первоначально частью пакета Samba, но по некоторым причинам их выделили в отдельный проект.
Для работы (монтирования) с расшаренными сетевыми дисками SMB/CIFS (Windows или Samba) необходимо установить пакет cifs-utils, который присутствует в репозиториях практически всех дистрибутивов Linux. Далее будем рассматривать только Ubuntu.
$ sudo apt-get install smbfs
Теперь можно монтировать расшаренные сетевые ресурсы:
$ sudo mount.cifs //192.168.1.107/share1/ /mnt/shares/share1/ -o user=user1,pass=user1password,iocharset=utf8,file_mode=0777,dir_mode=0777
- //192.168.1.107/share1/ – IP адрес или сетевое имя и имя расшаренного ресурса (папки)
- /mnt/shares/share1/ – точка монтирования
- -o users=user1,password=user1 – имя пользователя и пароль для доступа к общему ресурсу
- iocharset=utf8 — кодировка по умолчанию
- file_mod и dir_mod — права доступа к файлам и папкам в расшаренном ресурсе
Для монтирования публичных сетевых ресурсов имя пользователя и пароль не задаются:
mount.cifs //192.168.1.107/share1/ /mnt/shares/share1/ -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
Для того, чтобы расшаренный сетевой ресурс (папка) монтировался при загрузке системы, необходимо в конфигурационный файл /etc/fstab добавить строчку:
//192.168.1.129/share1 /mnt/shares/share1 cifs username=user1,password=user1password,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
В последних версиях Ubuntu/Mint может появляться ошибка:
mount error(2): No such file or directory Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
а в syslog можно найти следующее:
No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
В этом случае необходимо явно указать диалект, то-есть добавить в конец строки vers=1.0
mount.cifs //192.168.1.107/share1/ /mnt/shares/share1/ -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=1.0
Похожие статьи на сайте
- Методы монтирования дисков в Linux
- Монтирование расшаренных сетевых папок в Ubuntu
- Облачный диск через Webdav
Linux: подключить общую сетевую папку Windows по SMB (CIFS)
В этой статье мы рассмотрим, как в Linux смонтировать общую сетевую папку, расположенную на хосте Windows. В Windows для доступа к общим сетевым папкам используется протокол SMB (Server Message Block), который ранее назывался CIFS (Сommon Internet File System). В Linux для доступа к сетевым папкам Windows по протоколу SMB можно использовать клиент cifs-utils или Samba.
Совет. Для доступа к сетевым папкам по SMB/CIFS используется порт TCP/445. Для разрешения имени используются порты UDP 137, 138 и TCP 139. Если эти порты закрыты, вы сможете подключиться к сетевой папке Windows только по IP адресу.
Смонтировать сетевую папку в Linux с помощью cifs-util
Вы можете смонтировать сетевую папку, находящуюся на Windows хосте, с помощью утилит из пакета cifs-util. Для установки пакета выполните команду:
- В Ubuntu/Debian: $ sudo apt-get install cifs-utils
- В CentOS/Oracle/RHEL: $ sudo dnf install cifs-utils
Создайте точку монтирования:
$ sudo mkdir /mnt/share
Теперь вы можете смонтировать сетевую папку с компьютера Windows под пользователем User03с помощью команды:
$ sudo mount.cifs //192.168.31.33/backup /mnt/share -o user=User03
Укажите пароль пользователя Windows для подключения к сетевой папке.
![]()
При подключении сетевой SMB папки можно задать дополнительные параметры:
$ sudo mount -t cifs -o username=User03,password=PasswOrd1,uid=1000,iocharset=utf8 //192.168.31.33/backup /mnt/share
- //192.168.31.33/backup – сетевая папка Windows
- /mnt/share – точка монтирования
- -t cifs – указать файловую систему для монтирования
- -o опции монтирования (эту опцию можно использовать только с правами root, поэтому в команде используется sudo)
- username=User03,password=PasswOrd1 – имя и пароль пользователя Windows, у которого есть права доступа к сетевой папке. Можно указать имя пользователя guest, если разрешен анонимный доступ к сетевой папке
- iocharset=utf8 – включить поддержку кодировки UTF8 для отображения имен файлов
- uid=1000 – использовать этого пользователя Linux в качестве владельца файлов в папке

По умолчанию шары Windows монтируются в Linux с полными правами (0755). Если вы хотите изменить права по-умолчанию при монтировании, добавьте в команду опции:
dir_mode=0755,file_mode=0755
Если вы хотите использовать имя компьютера при подключении сетевого каталога Windows, добавьте в файл /etc/hosts строку:
IP_АДРЕС ИМЯ_КОМПЬЮТЕРА
Чтобы не указывать учетные данные пользователя Windows в команде монтирования сетевой папки, их можно сохранить в файле.
Добавьте в файл:
username=User03 password=PasswOrd1

Для подключения к папке под анонимным пользователем:
username=guest password=
Если нужно указать учетную запись пользователя из определенного домена Active Directory, добавьте в файл третью строку:
domain = vmblog.ru
Измените права на файл:
$ chmod 600 ~/.windowscredentials
Теперь при подключении сетевой папки вместо явного указания имени пользователя и пароля можно указать путь к файлу:
$ sudo mount -t cifs -o credentials=/home/sysops/.windowscredentials,uid=1000,iocharset=utf8 //192.168.31.33/backup /mnt/share
Отмонтировать сетевую SMB папку:
$ sudo umount /mnt/share
Автоматическое монтирование сетевой папки в Linux
Можно настроить автоматическое монтирование сетевой папки Windows через /etc/fstab.
$ sudo mcedit /etc/fstab
Добавьте в файл следующую строку подключения SMB каталога:
//192.168.31.33/backup /mnt/share cifs user,rw,credentials=/home/sysops/.windowscredentials,iocharset=utf8,nofail,_netdev 0 0
- rw – смонтировать SBM папку на чтение и запись
- nofail – продолжить загрузку ОС если не удается смонтировать файловую систему
- _netdev – указывает что подключается файловая система по сети. Linux не будет монтировать такие файловые системы пока на хосте не будет инициализирована сеть.
Вы можете указать версию протокола SMB, которую нужно использовать для подключения (версия SMB 1.0 считается небезопасной и отключена по-умолчанию в современных версиях Windows). Добавьте в конец строки с настройками подключения параметр vers=3.0 .
//192.168.31.33/backup /mnt/share cifs user,rw,credentials=/home/sysops/.windowscredentials,iocharset=utf8,nofail,_netdev,vers=3.0 0 0
Если на стороне хоста Windows используется несовместимая (старая версия) SMB, при подключении появится ошибка:
mount error(112): Host is downилиmount error(95): Operation not supported
Чтобы сразу смонтировать сетевую папку, выполните:
Linux: подключиться к сетевой папке с помощью клиента samba
Установите в Linux клиент samba:
- В Ubuntu/Debian: $ sudo apt-get install smbclient
- В CentOS/Oracle/RHEL: # dnf install smbclient
Для вывода всех SMB ресурсов в локальной сети:
Вывести список доступных SMB папок на удаленном хосте Windows:
smbclient -L //192.168.31.33 -N
Если в Windows запрещен анонимный доступ, появится ошибка:
session setup failed: NT_STATUS_ACCESS_DENIED
В этом случае нужно указать учетную запись пользователя Windows, которую нужно использовать для подключения:
smbclient -L //192.168.31.33 -U User03
Если нужно использовать учетную запись пользователя домена, добавьте опцию –W:
smbclient -L //192.168.31.33 -U User03 –W Domain

Для интерактивного подключения к сетевой папке Windows используется команда:
smbclient //192.168.31.33/backup -U User03 -W Domain
smbclient //192.168.31.33/backup -U User03
Для анонимного доступа:
smbclient //192.168.31.33/backup -U Everyone
После успешного входа появится приглашение:
Вывести список файлов в сетевой папке:

Скачать файл из сетевой папки Windows:
get remotefile.txt /home/sysops/localfile.txt
Сохранить локальный файл из Linux в SMB каталог:
put /home/sysops/localfile.txt remotefile.txt
Можно последовательно выполнить несколько команд smbclient:
$ smbclient //192.168.31.33/backup -U User03 -c «cd MyFolder; get arcive.zip /mnt/backup/archive.zip»
Полный список команд в smbclient можно вывести с помощью команды help. Команды smbclient схожи с командами ftp клиента.
При использовании команды smbclient может появиться ошибка:
Unable to initialize messaging contextsmbclient: Can't load /etc/samba/smb.conf - run testparm to debug it.
Чтобы исправить ошибку, создайте файл /etc/samba/smb.conf.
Если на хосте Windows отключен протокол SMB 1.0, то при подключении с помощью smbclient появится ошибка:
Reconnecting with SMB1 for workgroup listing. protocol negotiation failed: NT_STATUS_CONNECTION_RESET Unable to connect with SMB1 -- no workgroup available.
Как смонтировать сетевую папку Windows/Samba в Linux
Сетевая папка Windows может быть доступна в файловых менеджерах Linux как любая другая локальная папка. Для этого её нужно смонтировать. После монтирования не придётся использовать консоль для просмотра списка файлов и скачивания или закачивания файлов.
Начните с установки пакета cifs-utils.
В Debian, Linux Mint, Ubuntu, Kali Linux и производных выполните:
sudo apt install cifs-utils
В Arch Linux, BlackArch и производных выполните:
sudo pacman -S cifs-utils
Предыдущие команды smbtree и smbclient понимали имена компьютеров Windows, такие имена как HACKWARE-MIAL. Монтирование выполняется с помощью команды mount, которая такие имена не умеет обрабатывать без помощи преобразования имён DNS. Поэтому при монтировании можно либо:
- Использовать вместо имён компьютеров IP адрес. В этом случае у компьютера с сетевой папкой должен быть постоянный (статичный) IP адрес
- Либо настроить преобразование имён для компьютеров Windows. Это можно сделать, например, с помощью файла /etc/hosts. Кстати, в этом случае у компьютера с общей папкой также должен быть постоянный IP адрес (смотрите Как настроить локальный DNS используя файл /etc/hosts в Linux)
В общем, в любом случае настройте в роутере или в самой Windows постоянный локальный IP.
Если вы хотите настроить преобразование имён с помощью файла /etc/hosts, то откройте его:
sudo gedit /etc/hosts
И добавьте туда запись вида
IP_АДРЕС ИМЯ_КОМПЬЮТЕРА
Например, у меня IP_АДРЕС это 192.168.0.101, а именем компьютера является HACKWARE-MIAL, тогда я добавляю следующую запись:
192.168.0.101 HACKWARE-MIAL
Пингуем по имени компьютера Windows, чтобы убедиться, что всё сработало:
ping HACKWARE-MIAL
Теперь нам нужно создать точку монтирования — папку, где появятся файлы из шары. Я создаю папку /mnt/share:
sudo mkdir /mnt/share
Чтобы не возникало проблем с правами доступа, папка, куда монтируется шара (например, /mnt/share/), должна принадлежать текущему пользователю Linux — если вы создавали папку без sudo, то она уже принадлежит обычному пользователю. Но если вы создавали папку с sudo (например, иначе это невозможно сделать в /mnt/), то вам нужно поменять её владельца командой вида:
sudo chown ПОЛЬЗОВАТЕЛЬ /ПУТЬ/ДО/ТОЧКИ/МОНТИРОВАНИЯ/ШАРЫ
Чтобы узнать имя текущего пользователя выполните команду:
echo $USER
Например, чтобы поменять владельца папки /mnt/share/ на mial:
sudo chown mial /mnt/share/
Теперь для монтирования сетевой шары Windows нужно запустить команду вида:
sudo mount -t cifs -o username=guest,password=,uid=1000,iocharset=utf8 //ИМЯ-КОМПЬЮТЕРА/Папка /точка/монтирования
В этой команде вы должны вставить свои значения для
Значение других элементов команды:
- sudo — монтировать шару можно и без прав суперпользователя, но использовать опцию -o, после которой указываются опции для монтирования, можно только с правами root
- -t cifs выбор файловой системы для монтирования
- -o означает, что после этой опции будут перечислены опции для монтирования:
- username=guest,password= — произвольное имя пользователя без пароля — используется для подключение к общей папки, для которой не требуется вход. Вместо этой конструкции можно указать просто guest, но в этом случае на некоторых системах всё равно запрашивается пароль. По моим наблюдениям, пароль запрашивается когда имя текущего пользователя на Linux совпадает с именем пользователя на Windows
- uid=1000 — в качестве владельцев всех файлов в шаре будет указан текущий пользователь Linux
- iocharset=utf8 — эта кодировка позволяет работать с именами файлов, в которых используются не только латинские буквы
К примеру, путь до сетевой шары у меня //HACKWARE-MIAL/Share, её я хочу смотрировать в папку /mnt/share, тогда команда будет следующей:
sudo mount -t cifs -o username=guest,password=,uid=1000,iocharset=utf8 //HACKWARE-MIAL/Share /mnt/share
Вид сетевой папки Windows в Double Commander:
Вид сетевой папки в стандартном проводнике Linux:
Для размонтирования нужно запустить следующую команду (укажите либо точку монтирования, либо ресурсы, который был смонтирован):
sudo umount /mnt/share
Напомню, что в предыдущей части я не только настроил папку для входа без пароля, но на том же самом компьютере и настроил вторую папку с именем ShareRestricted. У этой папки владелец ShareOverlord, а пароль для входа 1234. Для подключения папки, доступ к которой возможен только по паролю, используется та же самая команда, но нужно указать реальные учётные данные:
sudo mount -t cifs -o username=ShareOverlord,password=1234,uid=1000,iocharset=utf8 //HACKWARE-MIAL/ShareRestricted /mnt/share
Чуть дальше очень похожий набор опций, в том числе пароль в открытом виде, мы будем использовать в файле /etc/fstab для настройки автоматического монтирования сетевой папки. Файл /etc/fstab доступен для чтения всем а, следовательно, также доступен всем ваш пароль от Windows в нём. Чтобы обойти эту проблему, можно использовать файл с учётными данными. Это файл содержит только имя пользователя и пароль.
Используя текстовый редактор, создайте файл с учётными данными для входа на ваш удалённый сервер:
gedit ~/.smbcredentials
В этот файл введите имя пользователя и пароль от Windows:
username=ИМЯ-ПОЛЬЗОВАТЕЛЯ password=ПАРОЛЬ
В моём примере это:
username=ShareOverlord password=1234
Сохраните файл и закройте редактор.
Измените права доступа к этому файлу, чтобы предотвратить нежелательный доступ к вашим учётным данным:
chmod 600 ~/.smbcredentials
Посмотрите абсолютный путь до этого файла:
realpath ~/.smbcredentials
В моём случае абсолютный путь:
/home/mial/.smbcredentials
Теперь вместо двух опций:
username=ПОЛЬЗОВАТЕЛЬ,password=ПАРОЛЬ
нужно использовать одну опцию, в качестве значения которой нужно указать абсолютный путь до файла с логином и паролем:
credentials=/home/ПОЛЬЗОВАТЕЛЬ/.smbcredentials
Моя команда стала выглядеть так:
sudo mount -t cifs -o credentials=/home/mial/.smbcredentials,uid=1000,iocharset=utf8 //HACKWARE-MIAL/ShareRestricted /mnt/share
Настройка автоматического монтирования сетевой папки в Linux
Автоматически монтируемые файловые системы прописываются в файле /etc/fstab. Откроем этот файл:
sudo gedit /etc/fstab
Теперь в него нужно добавить строку вида:
//ИМЯ-КОМПЬЮТЕРА/Папка /точка/монтирования cifs credentials=/home/mial/.smbcredentials,uid=1000,iocharset=utf8,nofail,_netdev 0 0
Мы добавили опцию nofail, чтобы ОС нормально загружалась даже если не удалось смонтировать данную файловую систему. Ещё добавьте опцию _netdev, эта опция означает, что файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).
Для моего примера это строка:
//HACKWARE-MIAL/ShareRestricted /mnt/share cifs credentials=/home/mial/.smbcredentials,uid=1000,iocharset=utf8,nofail,_netdev 0 0
Сохраним и закроем этот файл. Для проверки выполним:
sudo mount -a
Если сетевая папка успешно смонтировалась, значит можно выполнить проверку перезагрузкой.
Если нужно смонтировать папку для входа в которую не требуется пароль, то используйте в качестве опции учётные данные «username=guest,password=»:
//ИМЯ-КОМПЬЮТЕРА/Папка /точка/монтирования cifs username=guest,password=,uid=1000,iocharset=utf8,nofail,_netdev 0 0
Либо можно по-прежнему использовать файл .smbcredentials, как это было показано выше:
//ИМЯ-КОМПЬЮТЕРА/Папка /точка/монтирования cifs credentials=/home/mial/.smbcredentials,uid=1000,iocharset=utf8,nofail,_netdev 0 0
Но в файл ~/.smbcredentials запишите следующее:
username=guest password=
Как примонтировать сетевую папку в linux
01 мар 2023, 15:34
Есть сервер в локальной сети под управлением Ubuntu 20.04, на него установлена Samba и расшарена папка, доступная без пароля. На windows подключается сетевой диск без проблем. На linux mint делаю по инструкции ( https://sibsisadmin.ru/linux-mint-20-po . eii-papki/ ), в Сеть, прописываю адрес, выскакивает окошко подключиться анонимно или ввести пользователя, указываю анонимно и подключиться, подключается и видно расшаренную папку. Далее ее добавил в закладки, что б каждый раз не вводить адрес. После перезагрузки попка остается в закладках, и при открытии снова спрашивает анонимно или ввести пользователя и если нажать подключиться подключается. Но эту закладку не могу закрепить на рабочем столе.
Пробую прописать так:
sudo mount -t cifs -o username=guest,password= //10.130.230.230/public /home/user/myshare
Сетевая папка монтируется, файлы в ней видны.
Но вот когда хочу сделать чтобы данная папка монтировалась при загрузке системы
//10.130.230.230/public /home/user/myshare cifs username=guest,password=,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
пишет невозможно открыть так как требуются права суперпользователя.
Как сделать чтобы сетевая папка монтировалась при запуске и отображалась на рабочем столе?