Никогда не любил рутину. Став администратором 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