Сетевая папка 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/
Смотрите также: Как пользоваться командой chown для смены владельца и группы файла в Linux
Теперь для монтирования сетевой шары 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 (настройка SMB в Linux) (70.7%)
- Как подключиться к сетевой папке в командной строке Linux (70.7%)
- Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
- Где Samba хранит пароли. Как извлечь имена пользователей и паролей Samba (РЕШЕНО) (44.2%)
- Как в Linux подключить новый диск, разметить и отформатировать разделы (40.6%)
- Как установить RPM без root прав. Как извлечь RPM без установки (RANDOM - 11.3%)
Здравствуйте. Большое спасибо за полезную статью. Получилось примонтировать
расшаренную в windows 10 папку на астра-линукс. Но вот настроить автоматическое монтирование сетевой папки в Linux не удается. Извините ,но Ваши
файлы smbcredentials и ShareRestricted только все запутали.
А как должна выглядеть строка в файле fstab если у меня нет никаких паролей для входа в расшаренную папку ? Нигде не нашел, везде smbcredentials ))
Попробуйте так, должно сработать:
Либо оставляем как есть:
Но в файл ~/.smbcredentials пишем следующее:
А смысла делать sudo chown /mnt/share/ $USER, если после монтирования (следующий шаг) права от $USER улетают и владельцем папки снова становится root.
Suse11
И вот как копировать файлы пользователя $USER в примонтированную папку-шару — большой вопрос
Здравствуйте! Верное замечание — поправил в статье. Спасибо, что обратили внимание!
Как автоматически смонтировать сетевую папку Windows/Samba в Linux, если компьютеры находятся в домене? Нужно так что б было: зашел один пользователь с компьютера №1 под своим логином и паролем-общая папка примонтировалась с его логином и паролем. на этом же компьютере №1-заходит другой пользователь со своим логином и паролем и опять надо чтобы общая папка примонтировалась уже с его логином и паролем.
Добрый день, а подскажите пожалуйста, а можно ли в этот файл "credentials=/home/ПОЛЬЗОВАТЕЛЬ/.smbcredentials" и другие логины и пароли прописать, а потом использовать совместно с другими серваками?
Добрый день! а как при монтировать общую папку, если сервер находится в домене, как в таком случае подключить с правами доменного пользователя?