Монтирование CIFS

Периодически, при работе на Linux системах, требуется примонтировать расшаренную SMB-папку к файловой системе.

Для этой цели нам потребуется установленный пакет cifs-utils, установленный командой:

sudo apt-get install cifs-utils ntfs-3g ntfs-confiп
sudo yum install cifs-utils ntfs-3g ntfs-confi

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

sudo mkdir /mnt/sharefolder
Вот такой командой можно примонтировать папку, требующую авторизации по логину и паролю:
sudo mount -t cifs //192.168.80.10/share /mnt/sharefolder -o username=windowsuser,password=windowspass,iocharset=utf8,file_mode=0777,dir_mode=0777
где вместо:

  • //192.168.80.10/share – ip-адрес и имя необходимой общей папки (если имя расшаренной папки содержит пробел, то необходимо заключить весь путь в кавычки, как это показано в следующем примере)
  • /mnt/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
При удачном выполнении этих команд не должно произойти никакого уведомления – можете смело проверять как примонтировалась папка перейдя по вашему пути (в нашем примере – /mnt/sharefolder).
Отмонтируется папка командой:
sudo umount /mnt/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:

sudo apt-get install winbind
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).