====== Файловый сервер SAMBA ======
* [[https://ru.wikipedia.org/wiki/Samba|Samba]]
* [[https://interface31.ru/tech_it/2023/07/vklyuchaem-otobrazhenie-samba-servera-v-setevom-okruzhenii-windows.html|Включаем отображение Samba-сервера в сетевом окружении Windows]]
===== Установка SAMBA =====
==== Debian/Ubuntu ====
# apt install samba
# mkdir -p /disk2/samba && chown games /disk2/samba
===== Публичный каталог доступный на чтение =====
==== Debian/Ubuntu ====
# cat /etc/samba/smb.conf
[global]
security = user
map to guest = Bad User
[ast_records]
force user = asterisk
path = /var/spool/asterisk/monitor/
guest ok = Yes
[distrs]
force user = games
path = /var/distrs
guest ok = Yes
# mkdir /var/distrs
# cd /var/distrs
# wget http://val.bmstu.ru/unix/Mail/Thunderbird%20Setup%2017.0.msi
===== Публичный каталог доступный на запись =====
!!! Липовое окно аутентификации возникает в случае совпадения имени пользователя Windows с пользователем зарегистрированным в /etc/passwd
==== Debian/Ubuntu ====
# cat /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = cp866
workgroup = CORPX
security = user
# hosts allow = 192.168.100+X. 192.168.200+X.
map to guest = Bad User
[pub_share]
path = /disk2/samba
guest ok = yes
read only = no
force user = games
# browseable = no
# testparm
===== Идентификация доступа к файловому серверу на основе копии базы данных учетных записей =====
Добавляем пользователей user1 и user2 на server ([[Управление учетными записями в Linux]])
!!! smbd должен быть запущен!!!
server# smbpasswd -a user1
New SMB password: wpassword1
server# (echo wpassword2; echo wpassword2) | smbpasswd -a user2
# pdbedit -w -L
# smbpasswd -x user1
# cat /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = cp866
workgroup = CORPX
security = user
[homes]
read only = no
valid users = %S
; sometimes solves the problem permission deny
;;;; users = %U
; force user=%U
[corp_share]
path = /disk2/samba
valid users = user1 user2 games
# valid users = @group1 games
force user = games
read only = No
===== Идентификация доступа к файловому серверу на основе регистрации в Active Directory/DOMAIN/Kerberos REALM =====
==== Режим ADS без использования WINBIND ====
!!! В FreeBSD samba должна быть скомпилирована с поддержкой ADS !!!
=== Kerberos REALM ===
== FreeBSD (Heimdal) ==
server# kadmin -l
kadmin> add -r cifs/gate.corpX.un
kadmin> add -r cifs/gate.CORPX.UN
kadmin> ext -k gatecifs.keytab cifs/gate.corpX.un
kadmin> ext -k gatecifs.keytab cifs/gate.CORPX.UN
== Debian/Ubuntu MIT ==
server# kadmin.local
kadmin.local: addprinc -randkey cifs/gate.corpX.un
kadmin.local: addprinc -e rc4-hmac:normal -randkey cifs/gate.CORPX.UN
kadmin.local: ktadd -k gatecifs.keytab cifs/gate.corpX.un
kadmin.local: ktadd -k gatecifs.keytab cifs/gate.CORPX.UN
== FreeBSD/Debian/Ubuntu ==
server# scp gatecifs.keytab gate:
=== Active Directory ===
Login: gatecifs
Password: Pa$$w0rd
Пароль не меняется и не устаревает
Устанавливаем Microsoft Windows Support Tools
C:\>ktpass -princ cifs/gate.corpX.un@CORPX.UN -mapuser gatecifs -pass 'Pa$$w0rd' -out gatecifs.keytab
== Копируем ключ сервиса cifs на сервер samba ==
C:\>pscp gatecifs.keytab gate:
=== Копируем ключи в системный keytab ===
== FreeBSD (Heimdal) ==
gate# ktutil copy /root/gatecifs.keytab /etc/krb5.keytab
gate# ktutil list
== Debian/Ubuntu (MIT) ==
root@gate:~# ktutil
ktutil: rkt /root/gatecifs.keytab
ktutil: list
ktutil: wkt /etc/krb5.keytab
ktutil: quit
root@gate:~# klist -k /etc/krb5.keytab
=== Настройка samba сервера в режиме ADS без использования WINBIND ===
* [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=899269|ads with MIT Kerberos KDC fails]]
gate# cat /etc/samba/smb.conf
[global]
...
security = user
realm = CORPX.UN
kerberos method = system keytab
...
==== Режим ADS c WINBIND ====
Авторизация в режиме ADS ([[Сервис WINBIND]])
Примечание: достаточно зарегистрировать SAMBA сервер в домене, принципал cifs не нужен
==== Режим DOMAIN c WINBIND ====
Авторизация в режиме DOMAIN ([[Сервис WINBIND]])
==== Настройка samba сервера в режиме DOMAIN/ADS c WINBIND ====
gate# cat /etc/samba/smb.conf
[global]
...
[homes]
; may be need make homedir
read only = no
valid users = %S
[corp_share]
path = /disk2/samba
;with winbind
; valid users = CORPX\user1 CORPX\Administrator CORPX\root
; valid users = @CORPX\group1
; valid users = "@CORPX\domain users"
;without winbind, group1 must be master group
; valid users = @group1 games
;without winbind
; valid users = user1 user2 games
read only = no
force user = games
===== Автоматическое создание домашних каталогов =====
* Использование библиотеки PAM [[Использование библиотеки PAM#Автоматическое создание домашних каталогов]]
# cat /etc/pam.d/samba
...
@include common-session-noninteractive
session optional pam_mkhomedir.so
gate# cat /etc/samba/smb.conf
[global]
...
obey pam restrictions = yes
===== Отладка =====
* [[https://wiki.samba.org/index.php/Client_specific_logging|Client specific logging]]
# cat /etc/samba/smb.conf
[global]
...
max log size = 0
log file = /var/log/samba/log.%I
log level = 10
debug pid = yes
debug uid = yes
debug class = yes
debug hires timestamp = yes
...
===== Мониторинг активности пользователей =====
# smbstatus
* [[https://moiristo.wordpress.com/2009/08/10/samba-logging-user-activity/|Samba: Logging User Activity]] !!! аудит можно настроить глобально или, на конкретном ресурсе !!!
# cat /etc/samba/smb.conf
...
vfs objects = full_audit
full_audit:prefix = %U|%u|%I|%m|%S
full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename
full_audit:failure = none
full_audit:priority = NOTICE
...
# service smbd restart
# tail -f /var/log/syslog
===== Сокрытие названия/версии сервиса =====
# cat smb.conf
[global]
...
server string = MS File Server
...