SAMBA протокол

Windows в ритмі SAMBA: розшарюємо мережевий диск Linux по SMB

Уявімо собі ситуацію, коли у вас два ноутбуки: на одному – Windows, на іншому – Linux. Вам потрібно, щоби файли та папки Linux були доступними у провіднику Windows. Без підключення до інтернету, локально.

У цьому допоможе технологія Samba. Нижче подаю покрокове керівництво як підключити (розшарити) мережевий диск Linux (ext4) в Windows по протоколу SMB.

Що таке Samba?

Samba – технологія з відкритим вихідним кодом, розроблена австралійцем Ендрю Тріджелом у 1991 році, яка дозволяє створювати спільні мережеві ресурси між різними операційними системами, зокрема Linux та Windows, використовуючи протоколи Server Message Block (SMB) та CIFS (Common Internet File System).
Samba складається з таких служб-компонентів:
  • smbd – демон, що є SMB-сервером файлових служб та служб друку;
  • nmbd – демон, що надає служби імен NetBIOS;
  • winbindd – інтеграція з Windows Active Directory (AD);
  • smblient – утиліта надає доступ із командного рядка до ресурсів SMB.
  • smb.conf – конфігураційний файл, що містить параметри для всіх інструментів Samba;

Список портів, що застосовуються Samba:

  • UDP 137 – netbios-ns
  • UDP 138 – net-bios dgm
  • TCP 139 – netbios ssn
  • TCP 445 – microsoft-ds

Налаштування локальної мережі

Для початку з’єднайте обидва комп’ютери Ethernet-кабелем 1 Гбіт.

В Windows:

Перейти в ncpa.cpl і у властивостях Ethernet-з’єднання, в розділі IPv4 вказати налаштування:

  • 192.168.137.1 – локальна IP-адреса комп’ютера, до прикладу.
  • 255.255.255.0 – маска підмережі.

Відкрити вхідний і вихідний SMB-порти у Windows Firewall:

  • netsh advfirewall firewall add rule name="Samba Arch Out" dir=out protocol=tcp localport=139,445 action=allow profile=private
  • netsh advfirewall firewall add rule name="Samba Arch In" dir=in protocol=tcp localport=139,445 action=allow profile=private

В Linux:

  • sudo ip addr add 192.168.137.2/24 dev enp2s0 – присвоїти локальну мережеву IP-адресу Ethernet-інтерфейсу.
  • sudo ip link set enp2s0 up – підняти Ethernet-інтерфейс.
  • ip a show enp2s0 – аналіз стану мережевого інтерфейсу.
  • ping 192.168.137.1 – пропінгувати Windows-комп’ютер.
ЧИТАЙТЕ ТАКОЖ:  Як швидко розгорнути CMS WordPress на VPS сервері? (Apache + PHP)

Прописати в автозавантаження Systemd:

  • sudo nano /etc/systemd/network/10-wired.network
[Match]
Name=enp2s0

[Network]
Address=192.168.137.2/24
  • sudo systemctl enable --now systemd-networkd

Налаштування Samba в Linux

Встановлення:

  • apt-get install -y samba samba-client – Ubuntu/Debian.
  • sudo pacman -S samba – Arch Linux.

Увімкнення:

  • sudo systemctl status smb nmb
  • sudo systemctl enable smb nmb

Конфігурація:

  • sudo nano /etc/samba/smb.conf
[global]
map to guest = Bad User
security = USER
server string = Arch Linux
idmap config * : backend = tdb
server min protocol = SMB2
client min protocol = SMB2

[data1]
path = /data1
valid users = sambauser
guest ok = No
read only = No
create mask = 0777
directory mask = 0777

Права:

  • sudo chown -R sambauser:sambauser /data1
  • sudo chmod -R 777 /data1

Примітка: якщо треба додати ще одну папку чи диск, створюємо у конфігурації новий блок, аналогічно [data1], наприклад [data2]

Додати виключення в AppArmor:

  • sudo nano /etc/apparmor.d/usr.sbin.smbd

перед закриваючою дужкою додати:

/data1/ rwk,
/data1/** rwk,
  • sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.smbd

Протестувати конфігурацію і перезапустити службу:

  • testparm
  • sudo systemctl restart smb nmb

Під’єднання SMB-диску в Windows

  • net use Y: \\192.168.137.2\data1 /user:sambauser PASSWORD /persistent:yes – диск з’явиться в панелі провідника Windows.

Якщо потрібно підключити ще один – просто змінюємо літеру диска. Однак, усі вони мають бути закріплені за одним користувачем – Windows не підтримує багатокористувацький режим.

Керування мережевими ресурсами:

  • net use * /delete /y – вилучити усі мережеві диски.
  • net use J: /delete – вилучити вказаний мережевий диск.

Підказка: Якщо не хочете вказувати пароль у команді відкрито (його буде видно в історії PowerShell), можна спочатку зберегти обліковку окремо:
powershellcmdkey /add:192.168.137.2 /user:sambauser /pass:ВАШ_ПАРОЛЬ. Потім підключати вже без пароля: net use Y: \\192.168.137.2\data1 /persistent:yes

Діагностичні команди

Linux

  • ifconfig – список активних мережевих інтерфейсів.
  • ip link show – перевірити список мережевих інтерфейсів, включно з неактивними.
  • ip a show enp2s0 – аналіз заданого мережевого інтерфейсу.
  • sudo ip link set enp2s0 up – підняти інтерфейс.
  • systemctl status NetworkManager – перевірити статус служби Network Manager.
  • systemctl status systemd-networkd – перевірити статус служби Systemd.
  • nmcli connection show – перевірити наявні з’єднання.
  • sudo smbstatus – активні сесії.
  • sudo pdbedit -L – список Samba-користувачів.
  • ls -ld /data1 – Unix-права.
  • getfacl /data1 – розширені ACL.
  • sudo aa-status – статус AppArmor.
  • sudo tail -f /var/log/samba/log.smbd – лог у реальному часі.
  • smbclient //192.168.137.2/data1 -U sambauser – тест підключення без Windows.
  • ethtool enp2s0 – дізнатись швидкість з’єднання за вказаним мережевим інтерфейсом.
ЧИТАЙТЕ ТАКОЖ:  Три команди, які допоможуть опанувати редактор Vim

Windows

  • ipconfig – список активних мережевих інтерфейсів.
  • Get-NetConnectionProfile – аналіз мережевих інтерфейсів Windows.
  • net use – список під’єднаних мережевих дисків.
  • Get-NetAdapter -InterfaceIndex 22 | Select-Object Name, InterfaceDescription, LinkSpeed, Status – перевірити швидкість з’єднання заданого мережевого інтерфейсу (за id).

Автор: © Konrad Ravenstone, KR. Laboratories Research

Konrad Ravenstone// про автора

Кібермольфар, хакер, лінуксоїд, аналітик, дослідник в KR. Labs Research

Сподобалася стаття? Поділитися в соцмережах:
KR. Labs Research
Рекомендоване:
Windows 11 цікавий своїм просунутим інтерфейсом і дещо покращеною системою…