Автоматическое монтирование samba linux

Как смонтировать сетевую папку Windows/Samba в Linux

Сетевая папка Windows может быть доступна в файловых менеджерах Linux как любая другая локальная папка. Для этого её нужно смонтировать. После монтирования не придётся использовать консоль для просмотра списка файлов и скачивания или закачивания файлов.

Начните с установки пакета cifs-utils.

В Debian, Linux Mint, Ubuntu, Kali Linux и производных выполните:

sudo apt install cifs-utils

В Arch Linux, BlackArch и производных выполните:

Предыдущие команды smbtree и smbclient понимали имена компьютеров Windows, такие имена как HACKWARE-MIAL. Монтирование выполняется с помощью команды mount, которая такие имена не умеет обрабатывать без помощи преобразования имён DNS. Поэтому при монтировании можно либо:

  1. Использовать вместо имён компьютеров IP адрес. В этом случае у компьютера с сетевой папкой должен быть постоянный (статичный) IP адрес
  2. Либо настроить преобразование имён для компьютеров Windows. Это можно сделать, например, с помощью файла /etc/hosts. Кстати, в этом случае у компьютера с общей папкой также должен быть постоянный IP адрес (смотрите Как настроить локальный DNS используя файл /etc/hosts в Linux)

В общем, в любом случае настройте в роутере или в самой Windows постоянный локальный IP.

Если вы хотите настроить преобразование имён с помощью файла /etc/hosts, то откройте его:

И добавьте туда запись вида

Например, у меня IP_АДРЕС это 192.168.0.101, а именем компьютера является HACKWARE-MIAL, тогда я добавляю следующую запись:

Пингуем по имени компьютера Windows, чтобы убедиться, что всё сработало:

Теперь нам нужно создать точку монтирования — папку, где появятся файлы из шары. Я создаю папку /mnt/share:

Чтобы не возникало проблем с правами доступа, папка, куда монтируется шара (например, /mnt/share/), должна принадлежать текущему пользователю Linux — если вы создавали папку без sudo, то она уже принадлежит обычному пользователю. Но если вы создавали папку с sudo (например, иначе это невозможно сделать в /mnt/), то вам нужно поменять её владельца командой вида:

sudo chown ПОЛЬЗОВАТЕЛЬ /ПУТЬ/ДО/ТОЧКИ/МОНТИРОВАНИЯ/ШАРЫ

Чтобы узнать имя текущего пользователя выполните команду:

Например, чтобы поменять владельца папки /mnt/share/ на mial:

Теперь для монтирования сетевой шары 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 — эта кодировка позволяет работать с именами файлов, в которых используются не только латинские буквы
Читайте также:  Linux не работает telnet

К примеру, путь до сетевой шары у меня //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:

Для размонтирования нужно запустить следующую команду (укажите либо точку монтирования, либо ресурсы, который был смонтирован):

Напомню, что в предыдущей части я не только настроил папку для входа без пароля, но на том же самом компьютере и настроил вторую папку с именем 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 в нём. Чтобы обойти эту проблему, можно использовать файл с учётными данными. Это файл содержит только имя пользователя и пароль.

Используя текстовый редактор, создайте файл с учётными данными для входа на ваш удалённый сервер:

В этот файл введите имя пользователя и пароль от Windows:

username=ИМЯ-ПОЛЬЗОВАТЕЛЯ password=ПАРОЛЬ
username=ShareOverlord password=1234

Сохраните файл и закройте редактор.

Измените права доступа к этому файлу, чтобы предотвратить нежелательный доступ к вашим учётным данным:

Посмотрите абсолютный путь до этого файла:

В моём случае абсолютный путь:

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. Откроем этот файл:

Теперь в него нужно добавить строку вида:

//ИМЯ-КОМПЬЮТЕРА/Папка /точка/монтирования cifs credentials=/home/mial/.smbcredentials,uid=1000,iocharset=utf8,nofail,_netdev 0 0

Мы добавили опцию nofail, чтобы ОС нормально загружалась даже если не удалось смонтировать данную файловую систему. Ещё добавьте опцию _netdev, эта опция означает, что файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).

Читайте также:  Linux установка еще windows

Для моего примера это строка:

//HACKWARE-MIAL/ShareRestricted /mnt/share cifs credentials=/home/mial/.smbcredentials,uid=1000,iocharset=utf8,nofail,_netdev 0 0

Сохраним и закроем этот файл. Для проверки выполним:

Если сетевая папка успешно смонтировалась, значит можно выполнить проверку перезагрузкой.

Если нужно смонтировать папку для входа в которую не требуется пароль, то используйте в качестве опции учётные данные «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 запишите следующее:

Источник

Auto-mount Samba / CIFS shares via fstab on Linux

I’ve been a happy Linux user for quite a while now, but even I cannot deny that it’s sometimes quite hard to get things running smoothly — especially in a Windows dominated environment with little control. One of the things that breaks once in a while on my workstation is the automatic network share mounting I set up via /etc/fstab. This is usually caused by some server-side update that doesn’t affect the setups of Windows and Mac users, but can break your fstab mounting commands in a heartbeat.

Unfortunately, when things break, the feedback you get from running mount -a is often rather generic and of little help. A typical error:

sudo mount -a mount error(5): Input/output error Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) 

Not too helpful, is it? Debugging issues like this one can be quite tedious and time consuming, so I decided to write a little guide to mounting Windows (Samba) network shares on Linux (Fedora 26 in my case). There are a lot of guides out there already, but I found some things especially important and wanted to point those out. Let’s get started.

1. Install dependencies

Install the necessary “cifs-utils” with the package manager of your choice e.g. DNF on Fedora.

sudo dnf install cifs-utils 

2. Create mountpoints

Create a directory (mountpoint) in /media for every network share you want to mount. If /media does not exist yet, create it first. This is the location where you commonly mount removable volumes in Linux. After the mount is successful, you access all files on your network share from that directory, so be sure to give it a good name. e.g. /media/mordor

3. Create a credentials file (optional)

Usually network shares have access protection, so you’ll want to store your user credentials in a local credentials file. If you don’t want this, you’ll have to specify the credentials everytime you want to mount, so I highly recommend it, as long as it’s your machine you are mounting on. The credential file should be in any location in your user directory, e.g. /home/tim/.smb, and should look similiar to this:

user=tim password=mySecretPassword domain=myDomain 

4. Edit /etc/fstab

Now you should be all set and ready to edit your /etc/fstab file to do some mount magic. Just open the file with a text editor of your choice and add the following lines to the bottom of the file.

Читайте также:  Пароль рута linux mint

Important: Do not change or delete any other lines in the file! This can do serious harm to your system configuration and you might end up with a broken OS . You have been warned.

# for Windows Server 2008 samba shares: //mordor /media/mordor cifs uid=0,credentials=/home/tim/.smb,iocharset=utf8,noperm 0 0 # for Windows Server 2016 samba shares: //isengard /media/isengard cifs uid=0,credentials=/home/tim/.smb,iocharset=utf8,vers=3.0,noperm 0 0 

Notice the small difference? If things do not work, it’s usually because the “vers” argument is not set or incorrect. It specifies the Samba version to be used and depending on your server setup this might range from “vers=1.0” to “vers=3.0”. In my experience you best start of trying to mount the share without it and try-again with different settings if this doesn’t work out.

For Windows server 2008 shares I can usually get away without it. In more recent versions like Windows Server 2016 it likely needs to be “vers=2.1” or “vers=3.0”. However, my experience so far is limited to Fedora and a single network, so you might have to tweak the value some more.

5. Manually mount the share for testing

Although entries in /etc/fstab are automatically mounted when the system boots, it’s pretty annoying to debug your mount command this way. Here are two commands handy to manually mount and unmount all entries in fstab.

sudo mount -a sudo umount -a 

If you run the first command and do not get any errors, the mounting seems to have worked out fine. Don’t forget to check your mountpoint to make sure you have read / write access!

If you have any issues with your setup, feel free to leave a comment and I’ll try my best to help you out, although I’m far from being an expert on this topic. Good luck!

Источник

Оцените статью
Adblock
detector