[ Пред. ] [ main ] [ След. ]

Монтирование расшаренных windows-ресурсов в Linux (через CIFS)

 

#todo Про монтирование windows


Иногда, при организации совместных сетей между 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 ntfs-3g ntfs-config


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


sudo mkdir /media/sharefolder


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


sudo mount -t cifs //192.168.0.11/share /media/sharefolder -o username=windowsUserLogin,password=userPassword,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/общие\040документы /media/sharefolder cifs guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0


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


И, соответственно, если требуется только лишь гостевой доступ в режиме чтения к 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


После этого отредактируйте файл /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).


Часть решения


  1. Правим /etc/fstab под рутом

192.168.X.X:/dir1/dir2 /mnt/dir1/dir2 nfs noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,x-systemd.idle-timeout=1min 0 0


192.168.X.X:/dir1/dir2 -- откуда монтируем
/mnt/dir1/dir2 -- куда монтируем (директории должны существовать)


Если у тебя не nfs, а samba - делаем соответствующие правки. Не забываем про имя пользователя и пароль. У меня на домашнем сервере доступ всех компьютеров подсети по nfs к музыке и фильмам без пароля на read only.


  1. Если с ноутбука по wifi - может возникнуть следующий косяк: При выключении выключении ноутбук сначала выключает wifi, а потом долго и нудно пытается отмонтировать примонтированное. Это может затянутся надолго. Лечится так: идем в /etc/init.d/. Создаем файл например unmount_nfs.sh . Наполняем его следующим содержимым:

#!/bin/bash
#script for automatic un-mounting of network shares on reboot and shutdown
umount /mnt/dir1/dir2
exit


Селать этот скрипт исполняемым


chmod +x unmount_nfs.sh


И прописываем его
update-rc.d unmount_nfs.sh start 20 0 6 .
Напоминаю: все действия под рутом.


Одной строкой


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