Изначально для обмена между рабочими станциями служил протокол 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.
Доступ всем
Простая конфигурация файлового сервера будет такой:
[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
Отключаем Selinux.
nano /etc/selinux/config
меняем SELINUX на disabled
Перезагружаем операционную систему
reboot