Samba-сервер в Ubuntu.

samba logo
Організація доступу до файлів на комп’ютері під керуванням операційної системи Ubuntu за допомогою samba. Samba - реалізація мережевого протоколу SBM/CIFS, що використовується для надання доступу до файлів, принтерів, портів та реалізації іншої взаємодії між елементами комп’ютерних мереж.

Першим кроком є встановлення самого пакету:

sudo apt-get install samba

Додаємо у файл /etc/shells запис /bin/false Створюємо групу для доступу до спільних файлів:

sudo addgroup smbgroup

Створюємо в цій групі користувача для доступу до спільних файлів:

sudo useradd samba -s /bin/false
sudo smbpasswd -a samba
sudo usermod -aG smbgroup samba

вводимо для нього пароль з яким він матиме доступ до файлів. Далі потрібно відкорегувати вміст файлу /etc/samba/smb.conf з урахуванням параметрів мережі та доступу до необхідних ресурсів. Створюємо директорії і видаємо права на них

sudo chown -R root:smbgroup /home/juno/Samba/write/
sudo chown -R root:smbgroup /home/juno/Samba/read/
sudo chmod -R 0777 /home/juno/Samba/write/
sudo chmod -R 0555 /home/juno/Samba/read/

Можна використати наступний файл конфігурації. Він налаштований для ПК що знаходиться в робочій групі Workgroup, користувач для авторизованого доступу - samba, та теки до яких надається доступ /home/juno/Samba/read та /home/juno/Samba/write.

[global]
   workgroup = WORKGROUP
   netbios name = sol
   server string = %h server (Samba, Ubuntu)
   hosts allow = 10.0.0.0/24
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   usershare allow guests = yes
   follow symlinks = yes
   wide links = yes
   unix extensions = no
   security = USER
   interfaces = 10.0.0.2 enp34s0
   bind interfaces only = yes

[read]
   comment = Software space
   path = /home/juno/Samba/read
   read only = yes
   public = no
   guest ok = no
   guest only = no
   valid users @smbgroup

[write]
   comment = Temporary file space
   path = /home/juno/Samba/write
   read only = no
   public = no
   guest ok = no
   guest only = no
   valid users @smbgroup
   force create mode = 0777
   force directory mode = 0777

Для анонімного доступу до вказаних ресурсів файл конфігурації та права на директорії такі:

sudo chown -R nobody:nogroup /home/juno/Samba/write/
sudo chown -R nobody:nogroup /home/juno/Samba/read/
sudo chmod -R 0777 /home/juno/Samba/write/
sudo chmod -R 0555 /home/juno/Samba/read/
[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes

[read]
   comment = Software space
   path = /home/juno/Samba/read
   read only = yes
   public = yes
   guest ok = Yes
   guest only = Yes

[write]
   comment = Temporary file space
   path = /home/juno/Samba/write
   read only = no
   public = yes
   guest ok = Yes
   guest only = Yes
   force create mode = 0777
   force directory mode = 0777

З виходом samba 4.11 відбулася відмова від протоколу SMB1, в той же час із виходом Windows 10 1709 відключено SMB guest access. Із 4 існуючих на той момент рішень на момент виходу 21H2 особисто у мене, для анонімного гостьового доступу, працює лише 1 - дозвіл гостьових smb-підключень у Windows.
Відкриваємо gpedit.msc, і далі Computer configuration\Administrative templates\Network\Lanman Workstation\Enable insecure guest logons.
Крім того пропоувалися варіанти:

  • форсування використання SMB3
[global]
....
client min protocol = SMB3
client max protocol = SMB3
....
  • або так
[global]
....
server min protocol = SMB2_10
client min protocol = SMB2
client max protocol = SMB3
ntlm auth = yes
....
  • або включати у Windows SMB 1.0/CIFS Client