Файловая система CIFS, встроенная в ядро Linux обычно предпочтительный метод для монтирования расшаренных сетевых ресурсов SMB/CIFS. 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.
Теперь можно монтировать расшаренные сетевые ресурсы:
- //192.168.1.107/share1/ – IP адрес или сетевое имя и имя расшаренного ресурса (папки)
- /mnt/shares/share1/ – точка монтирования
- -o users=user1,password=user1 – имя пользователя и пароль для доступа к общему ресурсу
- iocharset=utf8 — кодировка по умолчанию
- file_mod и dir_mod — права доступа к файлам и папкам в расшаренном ресурсе
Для монтирования публичных сетевых ресурсов имя пользователя и пароль не задаются:
Для того, чтобы расшаренный сетевой ресурс (папка) монтировался при загрузке системы, необходимо в конфигурационный файл /etc/fstab добавить строчку:
Иногда нужно быстро подмонтировать к Linux сетевую шару Windows. Делается это очень просто одной командой в консоли с помощью mount -t cifs.
10.1.5.43 | адрес шары |
/mnt/documents | точка монтирования |
user1 | пользователь с доступом к шаре |
pass123 | пароль пользователя |
Если получаете ошибку примерно такого содержания:
Установите пакет cifs-utils:
Debian/Ubuntu | # apt-get install -y cifs-utils |
Centos/RHEL | # yum install -y cifs-utils |
После этого должно монтироваться нормально, если нет других ошибок.
Чтобы подмонтировать виндовую шару навечно, надо отредактировать fstab:
Вот и все, после перезагрузки шара будет автоматически монтироваться.
Онлайн курс по Linux
Помогла статья? Есть возможность отблагодарить автора
Автор Zerox
11 комментариев
Спасибо тебе большое , добрый человек, за правильную команду mount -t cifs //10.1.5.43/documents /mnt/documents -o user=user1,password=pass123 .
При попытке использовать опции -t и -o получаем отлуп — только рут может использовать данные ключи.
Как обойти это при монтировании смб-шары пользователем с обычными правами?
Внесу, пожалуй, свои 5 копеек:
1) Монтирование шары через fstab — не по феншую, ввиду наличия проблем с загрузкой, в случае недоступности шары. Давно уже придуманы systemd mount-unit’ы — они позволяют монтироваться автоматически, при обращении к шаре или, если это требуется, монтироваться после инициализации сети (aka network-online.target).
2) Замечу так же, что для получения нормальной скорости, при переходе на 4-ю версию самбы, требуется фиксить версии используемых протоколов. В противном случае получим значительный просад по скорости. Конфиги при этом требуется править как на сервере, так и на клиенте указывая минимальную версию протокола — SMB2. Примерно так:
server min protocol = SMB2
server max protocol = SMB3
client min protocol = SMB2
client max protocol = SMB3
min protocol = SMB2
max protocol = SMB3
client ipc min protocol = SMB2
В случае монтирования из консоли, так же лучше указать это в опциях, пример:
sudo mount
-t cifs //10.1.5.43/documents /mnt/documents
-o u >
где `vers=3.0` — версия протокола
Спасибо за содержательное и полезное дополнение. Сразу ответили на вопрос, который давно у меня зрел в голове, но никак не доходили руки уточнить. Как явно указать использовать определенную версию протокола smb.
Вы уверены что надо так: \10.1.5.43documents ….
а не так: //10.1.5.43/documents
Пробовал у себя как у Вас в примере написано, не заработало, повернул слеши и шара подцепилась.
Правда у меня не CentOS, а Mageia, но fstab думаю и в Африке fstab :))
Спасибо за замечание. Вы правы, слеши должны быть в другую сторону, как и в команде на ручное монтирование. Это была ошибка.
Добрый день! Подскажите пож-та, может сталкивались с такой проблемой и решили её: Есть Ubuntu 18.04 Gui gnome, введена в домен AD, логинятся доменные пользователи. Доступ залогиненных доменных пользователей к обменной папке на win2008r2 производится следующим образом: через nautilus-> другие места-> smb://server/obmen. В Nautilus появляется примонтированный obmen. Нажимаю ПКМ и добавляю в закладки(закладка останется в списке постоянно). Но при интенсивной работе c файлами в обменнике, он периодически отваливается с одной из двух ошибок: 1. Не удалось показать «server-11(smb)». Неизвестный тип файла 2. Ой, что-то пошло не так. Недостаточно прав для получения доступа к запрошенному адресу. Если выполнить smbclient -L server, то папку obmen видно. К папкам на других серверах доступ остаётся. В smb.conf вписал client max protocol = NT1. Есть подозрение, что проблема кроется в libreoffice, который не совсем корректно работает с файлами по сети. Как можно примонтировать сетевую папку скриптом в автозагрузке доменного пользователя, чтобы была сквозная доменная авторизация(пароли доменных пользователей меняются раз два месяца) т.к. нет возможности явно указать пароли в fstab?
Думаю, что тут стоит копать проблему и разбираться, почему сетевой диск отваливается. По автозагрузке ничего не скажу, я такой кейс не эксплуатировал ни разу.
Команда для автоматического монтирования не сработала. Добавил в /etc/fstab. Подскажите в чем может быть проблема. Может какие-то логи можно посмотреть?
В логах должна отразиться ошибка. Если через fstab совсем не получается и не понятно почему, а через консоль монтирует, то можно команду для монтирования через консоль просто добавить в /etc/rc.local Эффект будет тот же самый.
слеши в начале строчки разверни в другую сторону, по линуксовому =)
30 октября 2009 г.
Подключение сетевого диска в Ubuntu
Предположим, что на компьютере с IP адресом 192.168.0.1 открыта на доступ папка linux и нам нужно подключить ее в Ubuntu, чтобы получить к ней доступ, как к любой другой папке на диске.
-
Подключение сетевого диска вручную
После выполнения следующих команд содержимое сетевой папки //192.168.0.1/linux будет доступно пользователю в директории /media/sharename на локальном компьютере:
sudo mkdir /media/sharename
sudo mount //192.168.0.1/linux /media/sharename/ -o username=myusername,password=mypassword
Почему-то у меня при попытке подключиться к расшаренным windows-папкам пришлось указывать и username и password, даже для дисков, которые расшарены для всех. Если их вообще не писать, то попытка монтировки происходила под пользователем root, и mount возвращал ошибку -13 (permission denied), а если указать только имя пользователя — высвечивал приглашение ввести пароль доступа к папке.
Подключение сетевого диска вручную на чтение/запись для всех пользователей
sudo mkdir /media/sharename
sudo mount //192.168.0.1/linux /media/sharename/ -o username=myusername,password=mypassword,dmask=777,fmask=777
Подключение сетевого диска на этапе загрузки через fstab
sudo mkdir /media/sharename
sudo cp /etc/fstab /etc/fstab_backup
Создать файл /root/.smbcredentials и добавить следующие строки:
username=myusername
password=mypassword
Сделать файл /root/.smbcredentials недоступным для пользователей, а для root — только на чтение:
sudo chmod 400 /root/.smbcredentials
В файл /etc/fstab добавить следующие строки:
//192.168.0.1/linux /media/sharename smbfs credentials=/root/.smbcredentials 0 0
Для доступа на чтение/запись для всех:
//192.168.0.1/linux /media/sharename smbfs credentials=/root/.smbcredentials,dmask=777,fmask=777 0 0
На данный момент (в Ubuntu 9.10) тип smbfs устарел, поэтому нужно использовать тип cifs . Для типа cifs вместо dmask и fmask нужно указывать параметры dir_mode и file_mode , причем числовые значения этих параметров должны начинаться с нуля — " dir_mode=0777,file_mode=0777 ".
Подключение дисков из fstab без перезагрузки операционой системы
sudo mount -a
Для smbfs — //192.168.1.1/foldername
Для nfs — 192.168.1.1:/foldername
Дополнения:
- Если подключения диска не происходит, то можно посмотреть коды возвращаемых ошибок с помощью команды dmesg , а еще лучше запустить mount с помощью утилиты strace — sudo strace mount . .
Если mount возвращает ошибку (или вообще происходит нечно непонятное), то в первую очередь убедитесь, что у вас установлен mount , соответствующий типу файловой системы, которую вы хотите подключить. Например, для nfs в системе должен быть установлен mount.nfs , для smbfs — mount.smbfs , для cifs — mount.cifs и т.д. В качестве иллюстрации проблемы можно привести пример с cifs : при отсутствующем mount.cifs можно вполне успешно примонтировать cifs-диск используя параметры " username=. password=. ", но при этом попытка использования credential-файлов, будет заканчиваться ошибкой (http://ubuntuforums.org/archive/index.php/t-79612.html).
Ошибка монтирования " mount error 12 = Cannot allocate memory " при попытке подключения к расшаренной папке Windows.
Возможная причина — не хватает памяти на сервере (то есть, в Windows), а не на клиенте. В этом случае, могут помочь изменения в реестре Windows: . LanmanServer
ParametersIRPStackSize (для XP, 2000, NT) или . /LanmanServerParametersSize и . Session ManagerMemory ManagementLargeSystemCache (для Windows 7).
Ошибка монтирования " mount error 5 = Input/output error ". В логах dmesg сообщается об ошибке "CIFS VFS: cifs_read_super: get root inode failed".
Если при этом упоминается "Malformed FILE_UNIX_BASIC_INFO response", то возможно поможет добавление nounix в параметры вызова команды mount .
Еще одна возможная причина — проблемы с правами доступа к расшаренной папке. У меня такая ошибка возникла, когда на папку, которую, я хотел примонтировать, в числе прочих были установлены права "Everyone — Access denied". После корректировки прав доступа всё успешно примонтировалось.
Проблема монтирования CIFS диска на Ubuntu 9.10 — ресурс расшарен на другой unix-системе и успешно монтируется, но доступен только на чтение, хотя, если подключиться к этому ресурсу с помощью smbclient , то ресурс доступен и на чтение, и на запись.