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.
Нужно примонтировать заданную директорию на нем к локальному компьютеру. Должна быть возможность редактирования больших файлов без отправки файла туда-сюда целиком, то есть 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.
Общие ресурсы в локальной сети очень важны так как они облегчают работу, с их помощью можно делиться различными файлами и папками с другими пользователям сети. Согласитесь гораздо проще сделать общею папку чем каждый раз бегать с флешкой от компьютера к компьютеру. Это очень популярная тема по этому практически каждый пользователь знает как создать общею папку. Это что касается Windows там все просто и понятно. А вот как это сделать в Linux знает далеко не каждый. Сегодня поговорим о том как создать общею папку в Ubuntu и дать необходимые права на чтение или запись.
Как создать общею папку в Ubuntu
И так необходимо создать общею папку в Ubuntu и дать права пользователям. Для начала создать папку и дадим права на чтение и изменение всем пользователям. Для начала создаем пустую папку. Правой кнопкой Создать папку вводим имя папки.
В открывшемся окне идем на вкладку Права. Тут устанавливается права на папку давайте разрешим все пользователям просматривать расположенные в общей папки файлы а также изменять их. Для этого в поле Остальные выбираем Создание и удаление файлов. Так же нужно изменить права на вложенные файлы и папки для этого кликаем Изменить права на вложенные файлы.
В открывшемся окне нас интересует пункт Остальные. Выставляем в файлах Чтение и запись в Папках создание и удаление файлов.
Теперь пробуем подключиться к созданной общей папки например из Windows. Открываем проводники и вводим IP адрес и смотрим что получилось.
Если все сделали правильно то должна открыться общая папка. Можете поэкспериментировать с настройками прав. Так же создать папку и настроить права можно и через терминал но это уже для более опытных пользователей.