После объединения компьютеров в сеть приходит момент когда нужно совершить обмен различными файлами и документами. Для некоторых пользователей может быть достаточно внешнего файлообменника, месенджеров или даже флешкек. Но все эти способы обмена рано или поздно начнут напрягать.
Samba - набор программ которые помогают взаимодействовать в сети между различными компьютерами и операционными системами создавая сетевые диски и общие папки. Неважно какая ОС: Linux, Windows или macOS на стороне клиента который хочет получить доступ к файлам.
Установка samba в CentOS 8
Установим нужные пакеты.
dnf install samba samba-commom samba-client
Настройка samba в CentOS 8
Основной файл конфигурации это /etc/samba/smb.conf
Настройка сетевого ресурса с приватным доступом
Первым делом необходимо создать группу для пользователей которые будуть иметь доступ к сетевым ресурсам. У меня это будет группа shares
. Выполним команду:
groupadd shares
Создадим пользователя user1 и сразу добавим его в группу shares
useradd user1 -G shares
Или можем создать пользователя таким образом отключив возможность логинится в системе. Только будет доступ к самба шаре. Чуть безопаснее.
useradd -s /sbin/nologin -G shares user1
Дальше необходимо создать папку к которой необходимо дать доступ.
mkdir -p /srv/samba/files
Рекурсивно меняем права на папку
chmod -R 0770 /srv/samba/files
Меняем владельца и группу для папки
chown -R root:shares /srv/samba/files
Добавим пользователя в самбу и укажем для него пароль.
smbpasswd -a user1
Редактируем файл конфигурации и добавляем следующие строки
vim /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
netbios name = centos
interfaces = enp1s0 192.168.89.0/24
hosts allow = 127. 192.168.89.
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
map to guest = bad user
min protocol = SMB2
[files]
comment = Share with authenticated access
path = /srv/samba/files
browsable = yes
writable = yes
guest ok = no
valid users = root @shares
create mask = 0775
directory mask = 0775
force group = shares
Разберём основные параметры:
Глобальные параметры
- workgroup -
WORKGROUP
по умолчания в винде прописано так - netbios name - имя по которому будем доступен сервер самба
- interfaces - список сетевых интерфейсов которые Samba будет использовать для просмотра ресурсов сети
- hosts allow - список ip адресов или подсетей для которых будет доступен сетевой ресурс
- log file - лог файл
- max log size - максимальный размер в килобайтах лог файла
- secyrity - влияет на то, как будут себя вести клиенты Samba. Оставляем
user
- passdb backend - механизм для хранения информации о пользователях и, возможно, о группах.
smbpasswd
- Механизм по умолчанию. Необязательным параметром указывается путь к файлу smbpasswd.tdbsam
- Механизм, основанный на TDB. Необязательным параметром указывается путь к TDB (по умолчанию файл passdb.tdb ищется в директории private dir).ldapsam
- Механизм, основанный на LDAP. Необязательным параметром указывается ссылка на LDAP (по умолчанию ldap://localhost)
- map to guest - Этот параметр полезен только в режиме SECURITY = user, НО НЕ в режимах security = share и security = server. Он может принимать 4 различных значения, которые сообщают демону smbd что делать с запросами, которые не удалось аутентифицировать в UNIX.
- min protocol - минимальная версия протокола SMB, которую будет поддерживать Самба.
Параметры для пользовательских шар.
- comment - текстовое поле, которое отображается рядом с общим ресурсом
- path - директория, к которой пользователь получит доступ
- browseable - будет ли общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра.
- writable - включает возможность записи в сетевой ресурс
- guest ok - Если
yes
на общем ресурсе, то для подключения к ресурсу не требуется пароль. - valid users - список пользователей, которым разрешен доступ к сервису. Если значения параметра не определено, то все пользователи могут подключаться.
- create mask - Когда создается файл, необходимые права доступа рассчитываются в соответсвии с преобразованием из DOS прав в права UNIX
- directory mask - Права при создани каталогов
- force group - имя группы UNIX, которое будет назначено как первичная группа по умолчанию для всех пользователей, соединяющихся с этим сервисом.
Проверим нашу конфигурация командой:
testparm
Если нет ошибок идём дальше.
Настройка firewall для samba
Для firewalld
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
Для iptables:
iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -j ACCEPT
Если firewall отсутствует, то порты открывать не нужно.
Стартуем сервисы
systemctl start smb.service
systemctl start nmb.service
Добавляем в автозагрузку
systemctl enable smb.service
systemctl enable nmb.service
Готово. Можно пробовать подключатся.
В ОС Windows открываем Проводник и в строке путь через два слэша пишем ip адрес нашего SMB сервера. Должен отобразится список наших сетевых папок.
Для входа в папку вводим логин/пароль
Настройка сетевого ресурса с анонимным доступом
Порядок настройки немного короче:
- Создаём папку. У меня это будет
/srv/samba/anonymous
-
Меняем права
chmod -R 0755 /srv/samba/anonymous chown -R nobody:nobody /srv/samba/anonymous
-
Редактируем файл конфигурации и добавляем следующие строки
[Anonymous] path = /srv/samba/anonymous browsable = yes writable = yes guest ok = yes read only = no
-
Перезапускаем самбу.
systemctl restart smbd.service
При входе в такую сетевую папку пароль запрашиватся не будет.