====== Файловый сервер 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 ...