Table of Contents

Файловый сервер SAMBA

Установка 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

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

Автоматическое создание домашних каталогов

# 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

Отладка

# 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
# 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
...