Как настроить общую папку на ubuntu. Почему не Samba, NFS и так далее? Как работает SSHFS

Samba - это программное обеспечение для организации обмена файлами и работы с общими ресурсами между компьютерами под управлением Linux/Unix и операционной системой Windows. Samba состоит из клиентской и серверной части. Клиентская часть позволяет получить доступ к сетевым папкам и ресурсам Windows, а серверная, в свою очередь, открывает общий доступ к папке Ubuntu для других машин, в том числе и Windows.

В этой небольшой инструкции будет рассмотрена простейшая настройка Samba Ubuntu 18.04, а также как настроить общий доступ к папке Ubuntu с несколькими уровнями привилегий.

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

Получить доступ к расшаренным папкам в Ubuntu смогут как Linux так и Widnows машины, с помощью любой программы для работающей по протоколу SMB.

Для того чтобы все работало правильно, все машины должны состоять в одной рабочей группе, указанной на сервере Samba. По умолчанию для Windows, Linux и MacOS рабочая группа называется Workgroup. Чтобы узнать какая рабочая группа используется в вашей Windows откройте командную строку (Win+R, затем cmd) и выполните вот такую команду:

net config workstation

Нужный нам параметр мы видим в строке Домен рабочей станции . Это и есть рабочая группа.

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

И выполните команду:

notepad C:\Windows\System32\drivers\etc\hosts

В открывшимся файле добавьте строчку с IP адресом компьютера, на который будет установлен Samba:

192.168.0.1 srvr1.domain.com srvr1

Теперь можно переходить к вопросу как расшарить папку Ubuntu.

Настройка Samba в Ubuntu 16.04

Начнем, как обычно, с установки. Установка Samba Ubuntu вместе со всеми необходимыми компонентами выполняется командой:

sudo apt-get install -y samba samba-common python-glade2 system-config-samba

Когда все будет установлено, можно переходить к настройке. Сначала создайте резервную копию оригинального файла конфигурации Samba:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

После создания резервной копии, создайте свой файл конфигурации, этой командой:

sudo vi /etc/samba/smb.conf

Сначала укажем глобальные настройки файлового сервера. Для этого вставьте в файл такие строки:


workgroup = WORKGROUP

netbios name = Ubuntu Share
dns proxy = no

max log size = 1000
passdb backend = tdbsam
unix password sync = yes

pam password change = yes
map to guest = bad user
usershare allow guests = yes

Рассмотрим подробнее что значат эти строки.

  • workgroup - рабочая группа, как уже говорилось должна одинакова на всех машинах
  • netbios name - имя компьютера, которое будет отображаться в Windows;
  • log file - адрес файла, куда будут складываться сообщения об ошибках и другая информация;
  • security - по умолчанию выполнять аутентификацию на уровне пользователя;
  • name resolve order - очередность разрешения IP адресов по NetBIOS имени. bcast - означает отправить в локальную сеть широковещательный запрос. Если все компьютеры между которыми планируется взаимодействие находятся в одной сети этот вариант оптимальный;
  • passdb backend - способ хранения паролей пользователей;
  • unix password sync - синхронизация паролей пользователей samba с локальными паролями Unix;
  • map to guest - указывает, когда пользователю будет предоставляться гостевой доступ. Доступно три значения - never - никогда, bad user - когда такого пользователя не существует, bad password - когда пароль введен неверно,

Когда завершите создание конфигурационного файла, переходим к вопросу как расшарить папку Ubuntu для Windows.

Общий доступ к папке Ubuntu

Сначала давайте создадим общую папку доступную всем. То есть с анонимным доступом, без авторизации samba.

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

sudo mkdir -p /samba/allaccess

После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:

cd /samba
sudo chmod -R 0755 allaccess
sudo chown -R nobody:nogroup allaccess/

Следующим шагом будет описать папку allaccess в файле настройки samba:


path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no

Теперь ваш конфигурационный файл должен выглядеть вот так:


workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = Ubuntu Share
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
map to guest = bad user
usershare allow guests = yes
#==============
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no

Рассмотрим подробнее опции, которые были здесь использованы:

  • path - путь к папке, которую нужно расшарить;
  • browsable - будет ли папка отображаться в списке доступных шар;
  • writable - будет ли папка доступна для записи;
  • read only - папка доступна только для чтения;
  • guest ok, public - будет ли разрешен гостевой доступ;
  • only guest - если установлено yes, то папка будет доступна только гостям;
  • hosts allow - ip адреса, с которых можно получить доступ к этому серверу;
  • valid users - по умолчанию могут авторизоваться все пользователи, если в этом параметре передать список пользователей, то авторизоваться смогут только они;
  • create mask - маска прав для создаваемых файлов.

Чтобы применить изменения, перезапустите сервер Samba:

sudo systemctl restart samba

Настройка Samba Ubuntu 16.04 для анонимного доступа завершена. Теперь вы можете проверить доступность общей папки allaccess из Windows, для этого нажмите Win+R и выполните:

\\srvr1\allaccess

Вы увидите нашу папку. Если не увидите, проверьте еще раз конфигурацию. Доступ к папке можно получить без авторизации samba. Настойка Samba шары с доступом без авторизации завершена.

Также вы можете подключится к этому серверу из Linux с помощью Nautilus для этого достаточно набрать адрес smb://ip-сервера , в разделе другие места:

Защищенный общий доступ к папке Ubuntu

Чтобы расшарить папку для Windows Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.

Сначала создаем папку:

sudo mkdir -p /samba/allaccess/secured

Создаем группу:

sudo addgroup securedgroup

Настраиваем права:

cd /samba/allaccess
$ sudo chown -R richard:securedgroup secured
$ sudo chmod -R 0770 secured/

Последний шаг, добавляем настройки в конфигурационный файл samba:

sudo vi /etc/samba/smb.conf


path = /samba/allaccess/secured
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes

Перезапустите сервер Samba. Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.

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

sudo usermod -a -G securedgroup richard

Чтобы пользователь мог работать с расшаренными папками в Ubuntu, он должен быть в базе данных Samba. Поэтому создадим для него пароль Samba.

Общие ресурсы в локальной сети очень важны так как они облегчают работу, с их помощью можно делиться различными файлами и папками с другими пользователям сети. Согласитесь гораздо проще сделать общею папку чем каждый раз бегать с флешкой от компьютера к компьютеру. Это очень популярная тема по этому практически каждый пользователь знает как создать общею папку. Это что касается Windows там все просто и понятно. А вот как это сделать в Linux знает далеко не каждый. Сегодня поговорим о том как создать общею папку в Ubuntu и дать необходимые права на чтение или запись.

Как создать общею папку в Ubuntu

И так необходимо создать общею папку в Ubuntu и дать права пользователям. Для начала создать папку и дадим права на чтение и изменение всем пользователям. Для начала создаем пустую папку. Правой кнопкой Создать папку вводим имя папки.

В открывшемся окне идем на вкладку Права. Тут устанавливается права на папку давайте разрешим все пользователям просматривать расположенные в общей папки файлы а также изменять их. Для этого в поле Остальные выбираем Создание и удаление файлов. Так же нужно изменить права на вложенные файлы и папки для этого кликаем Изменить права на вложенные файлы.

В открывшемся окне нас интересует пункт Остальные. Выставляем в файлах Чтение и запись в Папках создание и удаление файлов.

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

Если все сделали правильно то должна открыться общая папка. Можете поэкспериментировать с настройками прав. Так же создать папку и настроить права можно и через терминал но это уже для более опытных пользователей.

Нужно примонтировать заданную директорию на нем к локальному компьютеру. Должна быть возможность редактирования больших файлов без отправки файла туда-сюда целиком, то есть FTP отпадает. Что выбрать? Ниже самый простой способ качественно расшарить директорию в Linux всего в 1 строчку.

Sshfs user@ example.com:/ path/ to/ directory / local/ path

Всё - директория расшарена. Самое удивительное, что для настройки не пришлось даже заходить на сервер. Соединение надежно зашифровано. Работа с файлами выглядит для пользователя абсолютно прозрачной. Если пользователю не сказать, что это примонтированная директория, находящаяся на сервере за тысячи километров, то он ни о чем и не догадается. SSHFS - выбор профессионалов.

Как работает SSHFS

Как можно догадаться из названия, эта виртуальная файловая система гармонично объединяет вместе две успешные и популярные технологии - FUSE и SSH. От SSH берется безопасность и мощь удаленного администрирования, а FUSE прозрачно интегрирует эти возможности на уровне файловой системы.

Почему не Samba, NFS и так далее?

FTP. Надо поднимать и настраивать сервер. Пароль пролетает открытым текстом, на радость каккерам. Умеет скачивать и закачивать файлы целиком, но не умеет исправить несколько байт в огромном файле без его передачи сначала на клиент, потом обратно.

Samba. Тяжелая система с запутанной настройкой. Пришла из мира Windows, притащив за собой все болячки и добавив новые. Использовать Самбу для расшаривания 1 директории ­- как стрелять по воробьям из пушки.

WebDAV. Нужно ставить тяжелый и неповоротливый Apache. Проблема с владельцем файлов. Сервер по умолчанию работает от имени пользователя www-data из группы www-data. Если монтируемая директория принадлежит другому пользователю, то нужно править конфигурационный файл и перезапускать Apache.

NFS. Как бы родная система для Linux, но почему-то всё равно требует доустановки на клиент и сервер кучи пакетов. Мудреная настройка, неразбериха с правами.

Если нет SSHFS на клиенте

То его легко установить. Зависимостей нет.

Apt-get install sshfs

На сервер вообще ничего не требуется устанавливать - используется стандартный ssh.