Изначально для обмена между рабочими станциями служил протокол FTP, однако он неудобен, так как основан на технологии клиент-сервер. Чтобы можно было получить с чьего-то компьютера файл, на нем должен был установлен и запущен FTP-сервер, а Вам нужно будет подключиться через программу FTP-клиента. Сложность в том, что необходимо устанавливать различные дополнительные программы и контролировать доступ.
Со временем в операционной системе Windows появился более удобный способ публиковать свои файлы в общий доступ -"Сетевое окружение", с помощью которого пользователь мог зайти на рабочую станцию и использовать его открытые ресурсы.
Чтобы пользователи системы Windows могли видеть Линукс в своем сетевом окружении, был разработан пакет "samba"(smb), который состоит из двух программ:
- сервер - позволяет публиковать папки для всеобщего просмотра;
- клиента - позволяет подключаться к другим компьютерам и работать с открытыми ресурсами.
Таким образом с помощью Самба можно сделать легкодоступный и удобный в использовании файловый сервер.
Самба представляет собой некую утилиту, при помощи которой обращаются к сетевым дискам. Для этого используется специальный протокол (имя ему – SMB/CIFS).
Файловый сервер состоит из двух разделов:
- Публичный;
- Приватный.
Содержание
Установка
В разных дистрибутивах Linux установка Самбы отличается, однако ее настройка совершено одинаковая. Поэтому рассмотрим установку на Debian / Ubuntu и Centos.
Для Debian / Ubuntu
apt-get update
Следующий шаг заключается в установке пакета. Он будет установлен из основного хранилища:
apt-get install -y samba samba-client
Для Сentos 7 и ниже:
yum install -y samba samba-client
Centos 8:
dnf install -y samba samba-client
Настройка
Основным конфигурационным файлом для Самба является smb.conf, которые лежит в каталоге /etc/samba.
Конфиг разбит на секции. Самой первой идет секция "global", в которой описываются глобальные настройки Samba-сервера. В ней можно увидеть следующие директивы:
- workgroup = имя - имя группы, в которую входит сервер Линукс;
- netbios name = имя - имя, которое пользователи будут видеть в сетевом окружении;
- server string = описание - свободный текст, который можно увидеть в поле "description";
- hosts allow = IP-адреса - адреса перечисленные (через пробел) или сетей, которым разрешен доступ к Samba-серверу.
- printcap name = файл - файл, описание принтеров.
Сделаем копию конфигурационных настроек smb.conf.
cp /etc/samba/smb.conf /etc/samba/smb.conf.original
Для примера создадим папку "obmen" в директории /home/samba/obmen, для которой сделаем общий доступ.
mkdir -p /home/samba/obmen
chmod 0777 /home/samba/obmen
chown -R nobody:nogroup /home/samba/obmen
Рассмотрим три варианта доступа к файловой шаре через протокол SMB:
- по айпи адресу;
- по имени пользователя и пароля;
- всем;
Доступ по IP-адресу
Редактируем конфигурационный файл.
nano /etc/samba/smb.conf
Делаем такие же настройки:
[global]
security = user
workgroup = GROUP
server string = Samba
map to guest = bad user
[obmen]
path = /home/samba/obmen
browsable = yes
writable = yes
guest ok = yes
read only = no
hosts allow = 10.10.10.1
Как видно из конфига выше, полный доступ имеет IP-адрес 10.10.10.1. Если необходимо задать пул адресов, например всю подсеть, то пишем так:
10.10.10.
Перезапускаем samba и проверяем работу.
systemctl restart smb
Или
service smbd restart
ВАЖНО! Как правило, SElinux (Security Enhanced Linux) запрещает работу smb, поэтому отключим Security Enhanced Linux.
nano /etc/selinux/config
меняем SELINUX на disabled
В итоге должно получиться:
SELINUX=disabled
Затем перезагружаем операционную систему Linux.
Доступ по логину и паролю
Для примера, создадим пользователя sambauser, который будет иметь доступ в общую папку по паролю.
adduser sambauser
Добавим пользователя в группу samba.
usermod -aG samba usersamba
Зададим пароль для пользователя.
smbpasswd -a sambauser
После вводы команды с параметром "-a", будет предложено ввести пароль.
nano /etc/samba/smb.conf
Меняем конфигурационный файл
[global]
security = user
passdb backend = tdbsam
workgroup = GROUP
server string = Samba
[share]
path = /home/samba/obmen
valid users = @samba
force group = samba
create mask = 0660
directory mask = 0771
writable = yes
browseable = yes
Перезагружаем сервис.
service smbd restart
Отключаем Selinux.
nano /etc/selinux/config
меняем SELINUX на disabled
Затем перезагружаем операционную систему Linux.
Доступ всем
Простая конфигурация файлового сервера будет такой:
Отключаем Selinux.
[global]
security = user
workgroup = GROUP
server string = Samba
guest account = nobody
map to guest = Bad User
[obmen]
path = /etc/home/obmen
browseable = Yes
guest ok = Yes
writeable = Yes
public = yes
nano /etc/selinux/config
меняем SELINUX на disabled
Перезагружаем операционную систему
reboot