====== Samba ======
===== Сведения =====
==== SMB ====
Server Message Block - **клиент-серверный протокол** прикладного уровня, **для доступа** к файлам, принтерам и прочим **сетевым ресурсам**.\\
Для соединения, SMB может **использовать** различные сетевые протоколы: **TCP/IP (NetBIOS), NetBEUI, IPX/SPX, Compaq**.\\
Первая версия протокола (Common Internet file System- **CIFS**) была разработана совместно, еще в 80-х годах, сейчас **SMB связан** прежде всего с системами **Microsoft Windows**.\\
==== Samba ====
Samba - это **пакет программ**, позволяющих **использовать SMB/CIFS**. Свободное ПО.\\
Начиная с 4ой версии, **может выступать** в роли **контроллера домена** и сервиса **Active Directory**.\\
===== Сервер Samba на Linux =====
**apt install samba**\\
==== Конфигурация ====
Файл конфигурации - **/etc/samba/smb.conf**\\
В основном, все работает из коробки, доступные директории описываются в отдельных секциях.\\
Для ограничения доступа есть директива **interfaces = ..** либо можно добавить **hosts allow = ..**\\
Пользователи настраиваются утилитой **smbpasswd**. У samba свои пользователи, они вроде так же должны быть созданы и в ОС.\\
==== Открытие ресурсов ====
Ресурсы настраиваются отдельными секциями, по умолчанию уже открыто несколько ресурсов.\\
Директивы:
* **browseable** - (y/n)
* **public** - (y/n)
* **writable** - (y/n) разрешает запись
* **guest ok** - (y/n) доступ к папке гостевой учетной записи
* **valid users** - список пользователей, которым разрешено подключится к папке (группа через @)
* **write list** - список пользователей, которые имеют доступ rw к папке (группа через @)
* **inherit owner** - (y/n) наследование при создании
* **create mask, directory mask** - (0777) назначение прав, при создании файлов/папок
* ** ** -
==== Общее ====
Подключить сетевой диск
apt install cifs-utils
mount -t cifs //server-name/share-name /mnt/share -o username=winuser,password=winpassword,domain=salf-net
# должна быть авторизация через cmd в винде
net use t: \\10.10.10.10\folder /user:my_username my_password
===== Опыт использования с Windows =====
Если клиенты на **Windows**, то гораздо лучше использовать **Samba, вместо NFS**.\\
Преимущества во всем, **подключается быстро**, с **кодировками** проблем нет.\\
В сетевом взаимодействии ничего особенного, винда открывает соединение на **445** порту, с первого раза **успешно**, далее идет сетевое взаимодействие.\\
Исходный файл (расширение нужно сменить на .pcapng): {{ :linux:file_base:test-smb.pcapng.odt |}}
===== Доменная авторизация =====
:!: Пример
[[https://serveradmin.ru/nastroyka-samba-s-integratsiey-v-ad/|Статья]]\\
###################################################################
# Ввод в домен с помощью winbind, выше был sssd вроде ? непонятно
###################################################################
# yum install samba-winbind samba-winbind-clients samba pam_krb5 krb5-workstation chrony
##########################
# Генерация конфига kerberos
##########################
authconfig --enablekrb5 --krb5kdc=netsrv.pw --krb5adminserver=netsrv.pw --krb5realm=NETSRV.PW --enablewinbind --enablewinbindauth --smbsecurity=ads --smbrealm=NETSRV.PW --smbservers=netsrv.pw --smbworkgroup=NETSRV --winbindtemplatehomedir=/home/%U --winbindtemplateshell=/bin/bash --enablemkhomedir --enablewinbindusedefaultdomain --update
###########################
# Заводим самбу в домен
net ads join -U
net ads testjoin
##########################
# конфиг smb.conf
##########################
[global]
workgroup = NETSRV
password server = NETSRV.PW
realm = NETSRV.PW
security = ads
idmap config * : range = 16777216-33554431
template homedir = /home/%U
template shell = /bin/bash
kerberos method = secrets only
winbind use default domain = true
winbind offline logon = false
passdb backend = tdbsam
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
domain master = no
local master = no
preferred master = no
os level = 1
log level = 3
log file = /var/log/samba/log.%m
#####################################
# Далее
systemctl start winbind
systemctl start smb.service
# Делаем проверки
wbinfo -t
перечень пользователей/групп
wbinfo -u
wbingo -g
wbinfo -i
# Проверка авторизации в домене
wbinfo -a \\
# Должна подгрузится инфа по пользователю
id
**Это под вопросом**\\
#####################################
# Ввод сервера в домен (sssd вроде)
#####################################
yum -y install krb5-user samba winbind ntp samba-winbind samba-winbind-clients pam_krb5
"127.0.0.1 localhost localhost.localdomain serviceApps serviceApps.netsrv.pw" > /etc/hosts
<=правки в /etc/krb5.conf=>
# авторизация хоста в домене
kinit
# проверка
klist
# здесь еще вроде как ввод в домен
realm discover
realm join -U
# Информация о домене
realm list
adcli info netsrv.pw
############################################
# параметры авторизации в /etc/krb5.conf
############################################
[libdefaults]
default_realm = <имя-домена>
ticket_lifetime = 24h
forwardable = true
[realms]
NETSRV.PW = {
kdc =
default_domain = <имя-домена>
}
[domain_realm]
.netsrv.pw = NETSRV.PW
netsrv.pw = NETSRV.PW
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
##########################
# параметры в smb.conf
##########################
[global]
unix extensions = no
workgroup = NETSRV
realm = NETSRV.PW
security = ads
domain master = no
local master = no
preferred master = no
load printers = no
printcap name = /etc/printcap
idmap config NETSRV : backend = rid
idmap config NETSRV : range = 5000-10000000
idmap config NETSRV : base_rid = 0
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind nested groups = yes
winbind refresh tickets = yes
winbind offline logon = true
template homedir = /home/%D/%U
template shell = /bin/false
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
restrict anonymous = 2
log file = /var/log/samba/samba.log
log level = 1
map to guest = Bad User
socket options = TCP_NODELAY
aio read size = 1
aio write size = 1
[mySuperShare]
path = /path/path/logs
guest ok = no
browsable = no
writeable = no
follow symlinks = yes
wide links = yes
create mask = 0444
directory mask = 0444
valid users = @NETSRV\ACL_FProfilesAutoAcceleration_R