Иногда, при организации совместных сетей между 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/общие\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
Или в 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).
Спасибо!
нужная тема, а главное все просто и понятно написано, респект автору
Опция user несколько удобнее нежели в связки usernamepassword.
В ней можно сразу указать и группу, и логн и пароль, вот пример авторизации в домене:
//192.168.0.58/e$ /home/crow/data cifs user=domain/admin%pas$W0rd,uid=500 0 0
БОЛЬШОЕ пасиба!
После 2х часов плясок с бубном наконец нашел вполне достаточный и имхо удобный мануал. Пока только здесь нашел параметры File_mode и Dir_mode, без которых samba- ресурсы монтируются “read only”.
Еще раз пасиба ресурсу и автору!
Спасибо за статью.
Обалденная статья – все понятно расписано. Спасибо. Будем брать у вас пример как писать просто о сложном 🙂
Приветствую! Существует ли путь для автомонтирования физического или логического диска Windows к папке Linux?
Спасибо. помогло. Респект
Все понятно и по делу. Добавлю, что в debian jessie надо ставить не smbfs, а cifs-utils.
ПРОСТО ОТЛИЧНО!
НЕИСТОВО ПЛЮСУЮ!
Спасибо!
Спасибо огромное! Никто, кроме Вас про такую “мелочь”, как пробелы в пути к шаре не пишет.
Спасибо, за Ваше подробное описание!
Спасибище !
Добавьте пожалуйста, про установку поддержки файловой системы ntfs.
sudo apt-get install ntfs-3g ntfs-config
А то помучился, выдавал ошибка (13). пока случайно не нашел.
И тогда все команды стали работать
Добавим. А что у вас за дистрибутив?
В большинстве современных дистрибутивов они сразу установлены.
дистрибутив ubuntu 16.04 desktop x86
Спасибо!
Всё что нужно без лишних “умных” слов!
Автору выражаю благодарность!!!
Друг… ты лучший. Коротко, ясно и без воды))
Огромное спасибо! Все работает идеально.
как бы еще это в автозапуск добавить? Добавляю в /etc/fstab параметр auto – не помогает….
Параметр auto не нужен. Соответствующая запись в /etc/fstab, как описано это в статье – это и есть автомонтирование (автозапуск).
на raspbian не работает….
Монтирование командой mount там работает? (без добавления в /etc/fstab)
Типа:
sudo mount -t cifs "//192.168.0.11/общие документы" /media/sharefolder -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
?
нет
работает только
//192.168.0.11/share /media/sharefolder cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 в файле
и команда sudo mount -a
https://blog.eq8.eu/til/raspberry-pi-cifs-mount-on-boot.html
sudo raspi-config
большое спасибо, работает
для цента7 актуальная команда mount.cifs //ip/share
При использовании в сети DFS, обращаться по IP адресу к сетевой шаре может не получиться.
Спасибо!
А как наооборот расшарить папку на CentOS ? Что бы к ней подключались как с винды так и с CentOS ?
Установить и настроить samba, как, например, описано тут:
https://www.dmosk.ru/instruktions.php?object=samba-centos8
Это всё отлично, а как насчет того, что логин и пароль хранятся в файлике?
1. Не секурно
2. Юзеры меняют пароли, ну или новому ставишь галку в AD сменить пароль при первом входе и всё пока, шара)
Мой кейс: Lunux в домене, нужно монтирование нескольких дисков без необходимости создавать файл, а использовать только тот, с чем залогинился в систему
> Это всё отлично, а как насчет того, что логин и пароль хранятся в файлике?
Вот такой командой можно примонтировать папку, требующую авторизации по логину и паролю, это потребует ручного ввода логина и пароля каждый раз:
sudo mount -t cifs //192.168.0.11/share /media/sharefolder -o username=windowsuser,password=windowspass,iocharset=utf8,file_mode=0777,dir_mode=0777
(можно поставить пробел перед выполнением команды, чтобы она не записывалась в .bash_history
mount error(2): No such file or directory
AstraLinux
Не найден путь для монтирования. Вы, возможно, не создали директорию куда монтируете или ошиблись в написании пути.