Интегрирование Linux в AD + файловый сервер

Никогда не любил рутину. Став администратором Linux почти сразу перевесил управление пользователями на админов Windows. Нынче в linux для этого используется sssd на всех дистрибутивах. Рассматривать будем Ubuntu, но кроме мелочей всё остальное делается аналогично на прочих дистрибутивах.

Системные пользователи

Начнём с проброса пользователей и групп из AD в Linux. Плюшка sssd — он пробрасывает пользователей и группы изAD делая их для системы локальными, так же приобразовывая уникальный SID пользователя из AD в уникальный UID на Linux однобразно (т.е. основываясь на своей логике UID пользователей на всех системах Linux всегда будет один и тот же), что упращает работу с правами доступа 😉

Начнём с установки пакетов:

# apt install krb5-user samba sssd

Настройки для kerberos, sssd и samba:

# vi /etc/krb5.conf
[libdefaults]
default_realm = DOMAIN.RU
ticket_lifetime = 24h
renew_lifetime = 7d
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# vi /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = DOMAIN.RU
[domain/DOMAIN.RU]
id_provider = ad
access_provider = ad
ad_gpo_access_control = disabled
default_shell = /bin/bash
fallback_homedir = /home/%u
# chmod 600 /etc/sssd/sssd.conf
# vi /etc/samba/smb.conf
[global]
workgroup = DOMAIN
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = DOMAIN.RU
security = ads

Добавим создание домашней директории для пользователей, для этого в файл /etc/pam.d/common-session сразу после строчки session required pam_unix.so:

session required pam_mkhomedir.so umask=0022

Настройки готовы, пора подключаться к домену:

# systemctl restart smbd.service nmbd.service sssd.service
# kinit Administrator
# net ads join -k

Проверим подключение:

# klist -k
# getent passwd Administrator

Далее настроим ограничение доступа, не стоит пускать всех подряд на сервер, ораничимся группой linux_users из домена:

# vi /etc/security/access.conf
+ : linux_users : ALL
- : ALL : ALL

Настроим sudo для пользователей домена из группы linux_admins:

# vi /etc/sudoers.d/admins
%linux_admins ALL=(ALL:ALL) NOPASSWD:ALL

На сервер можно заходить пользователями группы linux_users из домена и получать sudo пользователями группы linux_admins.

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

Далее настроим шару на samba с прозрачной авторизацией из домена пользователям share_users:

# vi /etc/samba/smbd.conf
[global]
workgroup = DOMAIN
realm = DOMAIN.RU
security = ADS
kerberos method = secrets and keytab
client signing = if_required
idmap config * : range = 20000-29999
idmap config * : backend = tdb
idmap config DOMAIN : range = 30000-39999
idmap config DOMAIN : backend = nss
load printers = No
printcap name = /dev/null
disable spoolss = Yes
show add printer wizard = No
map acl inherit = yes
store dos attributes = yes
[shared]
path = /media/data/shared
valid users = @"share_users"
read only = No

Иногда надо в наш билет kerberos надо добавть права для cifs:

# net ads keytab add cifs -k -U Administrator

А теперь поиграимся с правами на директории:

  • у пользователей share_users будут права на чтение везде;
  • у пользователей upload_users будут права на чтение везде, а в директорию uploads они смогут писать (данная группа является членом группы share_users);
  • у пользователей linux_users будут полные права на все директории (данная группа является членом группы share_users). # mkdir -p /media/data/shared/uploads # chown -R root:linux_users /media/data/shared # chmod -R 770 /media/data/shared # setfacl -R -m g:share_users:r-x /media/data/shared # setfacl -R -m d:g:share_users:r-x /media/data/shared # setfacl -R -m g:upload_users:rwx /media/data/shared/uploads # setfacl -R -m d:g:upload_users:rwx /media/data/shared/uploads

Связаные ресурсы: