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 всього в один рядок.
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.