zaLinux.ru

Как сделать общую сетевую папку в Linux (настройка SMB в Linux)


Начните с установки пакетов samba и smbclient.

В Debian, Linux Mint, Ubuntu, Kali Linux и их производных для установки samba выполните команду:

sudo apt install samba smbclient

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

sudo pacman -S samba smbclient

Следующая команда не сработает, если отсутствует файл /etc/samba/smb.conf. Если у вас тоже нет этого файла, то создаёте его заглушку — к настройке самого файла smb.conf мы вернёмся позже:

sudo touch /etc/samba/smb.conf

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

Для установки пароля Samba, выполните следующую команду:

sudo smbpasswd -a $USER

Если вы хотите, чтобы у пользователя не было пароля, то укажите опцию -n.

Создайте папку, которая станет совместно используемой:

mkdir ~/linuxshare

Узнаем абсолютный путь до папки ~/linuxshare:

realpath ~/linuxshare

У меня это:

/home/mial/linuxshare

Откройте для редактирования файл /etc/samba/smb.conf:

sudo gedit /etc/samba/smb.conf

Добавьте туда строки вида:

[ИМЯ_ПАПКИ]
comment = Samba на Linux
path = /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/ИМЯ_ПАПКИ
valid users = ИМЯ_ПОЛЬЗОВАТЕЛЯ
read only = no
browsable = yes

Обратите внимание, что все пробелы в строках выше являются обязательными.

Для моих данных это строки:

[linuxshare]
comment = Samba на Linux
path = /home/mial/linuxshare
valid users = mial
read only = no
browsable = yes

Теперь запустим службу SMB:


sudo systemctl start smb.service

Для добавления службы в автозагрузку выполните:

sudo systemctl enable smb.service

Для подключения к этой общей сетевой папке на Linux нужно использовать IP адреса компьютера Linux.

Создадим файл, чтобы сетевая папка не была пустой:

echo "Документ на Linux" > ~/linuxshare/document.txt

Посмотрите локальный IP адрес компьютера, на котором запущена Linux:

ip a

У меня этим IP является 192.168.0.89, а папку, как мы помним, я создал с именем linuxshare, тогда в Windows я перехожу в проводнике во вкладку «Сеть» и подключаюсь к этой папке следующим образом:


\\192.168.0.89\linuxshare

Вводим учётные данные (которые мы установили командой smbpasswd):

Видим содержимое совместно используемой папки, размещённой на Linux с помощью SMB:

Для подключения к сетевой папке из консоли Linux, запустите команду вида:

sudo smbclient //IP_АДРЕС/Папка -U ПОЛЬЗОВАТЕЛЬ

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

sudo smbclient //192.168.0.89/linuxshare -U mial

После ввода пароля нам становится доступным содержимое сетевой папки.

Смотрите также «SMB и Samba в Linux: подключение к общей папке Windows, создание сетевых папок в Linux».


Рекомендуемые статьи:

5 Комментарии

  1. Андрей

    Здравствуйте.

    Во первых после ввода комманды sudo systemctl start smb.service получаю ошибку Failed to start smb.service: Unit smb.service not found.
    Наверное правильнее smbd.service. Поэтому и комманда sudo systemctl enable smb.service тоже не правильная.

    Во вторых. После всех действий не подключается из Widows 10, после ввода пароля. Пишет нет доступа. Папка видна, но не открывается.

    Использую Linux Mint 21.2 xfce

    1. Alexey (Автор записи)

      Наверное правильнее smbd.service.

      Приветствую! Название служб в дистрибутивах на основе Debian (как у вас) и на основе Arch Linux (который я использую для инструкций) может различаться. Я проверил в последней версии Debian: работают оба названия smb и smbd (то есть со временем это «нововведение» доберётся и до Linux Mint, которая основывается на Ubuntu, которая основывается на Debian). Если в вашей ОС работает только smbd, то используйте это имя службы — это одно и то же.

      Что касается ошибки,

      Множественное подключение к серверу или к общим ресурсам одним пользователем с использованием более одного имени пользователя не разрешено. Отключите все предыдущие подключения к серверу или общим ресурсам и повторите попытку.

      То попробуйте в Windows выполнить команды:

      net stop workstation /y
      net start workstation

      Либо если вы предпочитаете PowerShell то выполните команду:

      Get-Service workstation | Restart-Service -Force

      Обратите внимание, что эти команды необходимо выполнять с правами администратора.

      1. Андрей

        Благодарю за разъяснения и за статью. Главное кратко и без лишнего. Все заработало.

         

  2. Viktor

    При подключении к папке после ввода логина и пароля "Отказанов доступе".

  3. Андрей

    Здравствуйте. А как мне открыть доступ к другой папке на другом диске, и ещё чтоб целый диск открыть доступ? линукс минт использую.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *