Сейчас быстренько за 5-10 минут развернем файловый сервер на Samba 3 с доменной авторизацией (через ActiveDirectory).
Дано:
- Сервер DC (primary) – dcsrv (win 2k3, 2k8, 2k12)
- Сервер с Samba – smbsrv
- Домен – COMPANY.LOCAL
Все действия на smbsrv. Установим нужные пакеты:
# yum install samba samba-common krb5-workstation sssd-krb5-common sssd-krb5 pam_krb5 krb5-libs ntp -y
Сначала проверим, что у нас корректная дата и время (и они совпадают с доменными)
# date
Fri Feb 24 12:43:05 +03 2017
Установим временную зону
# cp /usr/share/zoneinfo/Europe/Minsk /etc/localtime
Теперь настроим керберос, чтобы конфиг /etc/krb5.conf выглядел вот так
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] clockskew = 300 default_realm = COMPANY.LOCAL kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true [realms] CAPITAL.LOCAL = { kdc = dcsrv.capital.local admin_server = dcsrv.capital.local default_domain = COMPANY } [domain_realm] .capital.local = COMPANY.LOCAL capital.local = COMPANY.LOCAL
Теперь включим авторизацию через winbind. Редактируем файл /etc/nsswitch.conf и добавим то, что выделено жирным
passwd: files winbind shadow: files group: files winbind
И наконец сам конфиг самбы /etc/samba/smb.conf
#======================= Global Settings ===================================== [global] server string = Samba netbios name = smbsrv security = ads realm = COMPANY.LOCAL workgroup = COMPANY domain master = no local master = no winbind separator = + idmap config * : range = 10000-20000 idmap config * : backend = tdb winbind enum users = yes winbind enum groups = yes template shell = /bin/bash blocking locks = no client use spnego = yes client ntlmv2 auth = yes encrypt passwords = yes winbind use default domain = yes restrict anonymous = 2 admin users = COMPANY+admin write list = COMPANY+admin acl compatibility = auto map acl inherit = yes max connections = 0 load printers = no printing = bsd printcap name = /dev/null hide files = /*.flag/$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/~*/miranda/ # логирование (нужно дополнительно настроить rsyslog) log level = 0 vfs:2 max log size = 0 syslog = 0 #============================ Share Definitions ============================== [Share1] path = /mnt/share1 read only = no create mask = 0600 directory mask = 0700 inherit acls = yes inherit owner = no inherit permissions = yes map acl inherit = yes nt acl support = yes valid users = COMPANY+admin [Share2] path = /mnt/share2 read only = no create mask = 0600 directory mask = 0700 inherit acls = yes inherit owner = no inherit permissions = yes map acl inherit = yes nt acl support = yes valid users = COMPANY+user1 COMPANY+user2 COMPANY+user3 [Share3] path = /mnt/share3 read only = no create mask = 0600 directory mask = 0700 inherit acls = yes inherit owner = no inherit permissions = yes map acl inherit = yes nt acl support = yes
Создем директорию для шары и даем права
# mkdir /mnt/share1 && chmod 777 /mnt/share1
# mkdir /mnt/share2 && chmod 777 /mnt/share2
# mkdir /mnt/share3 && chmod 777 /mnt/share3
Запустим службы
# service winbind start && service smb start && service ntpd start
Вводим smbsrv в домен. Для этого у нас должны быть прописаны hostname и запись в DNS. (не помешает в /etc/hosts добавить “127.0.0.1 smbsrv”)
# net ads join -U admin_name
После нажатия Enter у нас спросят пароль администратора домена. Если все успешно, увидим что-то вроде
Enter admin's password: Using short domain name -- COMPANY Joined 'SMBSRV' to dns domain 'company.local'
Проверим
# wbinfo -p
Ping to winbindd succeeded
# wbinfo -t
checking the trust secret for domain COMPANY via RPC calls succeeded
Чтобы вывести группы и пользователей домена, соответственно
# wbinfo -g
# wbinfo -u
Теперь перезапустим все службы и добавим их в автозапуск
# service winbind restart && service smb restart && service ntpd restart
# chkconfig winbind on && chkconfig smb on && chkconfig ntpd on
Заходим на шары и проверяем. На Share1 может зайти только администратор домена (admin), на Share2 только указанные пользователи (user1, user2, user3). А на Share3 могут зайти все, политика доступа уже регулируется только ACL’ами. В помощь getfacl и setfacl 😉