Samba - это сервер или клиент на линуксе, поддерживающий протокол SMB, проще говоря, сетевая папка Windows. Очень полезно для взаимодействия linux и windows. Например, в офисе стоит сервер с CRM и есть сетевой сканер, который результаты складывает в сетевую папку, логично эту сетевую папку разместить на сервере под управлением Linux, а не на клиентской машине, т.к. сервер включен всегда, а машины включаются/выключаются в зависимости от присутствия сотрудников.
Второй пример - у меня рабочий комп на Windows 10, но разработку я веду на Linux, который в виртуальной машине под Hyper-V, Debian из коробки подгружает модули Hyper-V, которые делают 10 гигабитную сеть между машинами и между хостом и гостевыми машинами, если расшарить сетевую папку из линукса в Windows, то можно работать через сетевую папку и отклик будет настолько быстрым, что скорость не будет отличаться от локальной папки, только вот приходится немного подкрутить параметры, чтобы достигнуть желаемого без всяких подтормаживаний...
- Ставим сервер Samba
apt-get install samba
2. Создаем папку, которую будем шарить, например project
создавать папку в корне - плохой тон, но мне пофиг, у меня временный сервак для всяких опытов и все файлы на одном разделе диска...
mkdir /project
3. Открываем наш конфиг
nano /etc/samba/smb.conf
И начинаем разбираться с параметрами, можно удалить всё содержимое и заменить вот таким, можно почитать описания, что то подправить....
[global]
interfaces = eth0
bind interfaces only = yes
deadtime = 15
disable netbios = yes
dns proxy = no
domain master = yes
encrypt passwords = true
guest ok = no
hosts allow = 192.168.200.0/255.255.255.0 127.0.0.1
hosts deny = all
invalid users = nobody root
load printers = no
max connections = 10
netbios name = techresearch
preferred master = yes
preserve case = yes
printable = no
server string = Samba Share
; это невероятное шаманство, сильно ускоряет все операции
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
strict sync = no
sync always = no
syslog = 0
workgroup = WORKGROUP
log file = /dev/null
log level = 0
[project]
browseable = yes
path = /project
guest ok = no
create mask = 0750
writable = yes
Обратите внимание на eth0 - название интерфейса, это достаточно важный параметр, когда ваш сервер смотрит и в интернет и в локальную сеть, нужно разрешить только локальную сеть.
А второй параметр 192.168.200.0 - даже если у меня каким-то образом прокинется порт в локалку и запрос прилетит с маршрутизатора, то всё равно IP адрес не будет разрешенным.
4. Теперь надо добавить пользователя для подключения, прописать его пароль, обратите на параметр -a
, он добавляет пользователя (локального) в samba и позволяет задать для него отличающийся от системного пароль
smbpasswd -a user
При изменении пароля делается всё тоже самое, только без параметра, если же захотите удалить пользователя, то флаг -x
, для отключения -d
, для обратного включения -e
, узнать все параметры можно через -h
Потом перезагрузим
/etc/init.d/samba restart
Дальше можно проверять, win+r, вводим ip машины
Вводим логин и пароль, если не хотите вводить пароль и логин, но сохранить пароль на папку - можно его в самбе сделать совпадающим с локальным на Windows, в ограниченных редакциях Windows не дает сохранить пароль, поэтому там только вот так решается
Как видим, всё работает
Не забудьте еще дать соответственные права на чтение/запись в папку, которую расшариваем...
Хочу сказать, что алгоритм на других линуксах аналогичный, только там вместо apt-get будет yum или еще какой менеджер пакетов.