Уявімо собі ситуацію, коли у вас два ноутбуки: на одному – Windows, на іншому – Linux. Вам потрібно, щоби файли та папки Linux були доступними у провіднику Windows. Без підключення до інтернету, локально.
У цьому допоможе технологія Samba. Нижче подаю покрокове керівництво як підключити (розшарити) мережевий диск Linux (ext4) в Windows по протоколу SMB.
Що таке Samba?
Samba – технологія з відкритим вихідним кодом, розроблена австралійцем Ендрю Тріджелом у 1991 році, яка дозволяє створювати спільні мережеві ресурси між різними операційними системами, зокрема Linux та Windows, використовуючи протоколи Server Message Block (SMB) та CIFS (Common Internet File System).
smbd– демон, що є SMB-сервером файлових служб та служб друку;nmbd– демон, що надає служби імен NetBIOS;winbindd– інтеграція з Windows Active Directory (AD);smblient– утиліта надає доступ із командного рядка до ресурсів SMB.smb.conf– конфігураційний файл, що містить параметри для всіх інструментів Samba;
Список портів, що застосовуються Samba:
UDP 137– netbios-nsUDP 138– net-bios dgmTCP 139– netbios ssnTCP 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=privatenetsh 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-комп’ютер.
Прописати в автозавантаження 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 nmbsudo 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 /data1sudo 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
Протестувати конфігурацію і перезапустити службу:
testparmsudo 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– дізнатись швидкість з’єднання за вказаним мережевим інтерфейсом.
Windows
ipconfig– список активних мережевих інтерфейсів.Get-NetConnectionProfile– аналіз мережевих інтерфейсів Windows.net use– список під’єднаних мережевих дисків.Get-NetAdapter -InterfaceIndex 22 | Select-Object Name, InterfaceDescription, LinkSpeed, Status– перевірити швидкість з’єднання заданого мережевого інтерфейсу (за id).
Автор: © Konrad Ravenstone, KR. Laboratories Research

