ALTDC: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Добавляем скрипт в pam_script)
м (Откат правок Vovan (обсуждение) к версии Decoy)
(Метки: замена, откат)
Строка 1: Строка 1:
=Порядок развёртывания на Альт Стартеркит MATE=
+
Устанавливаем нужные пакеты task-samba-dc admc
  
==Подготовка и установка необходимых пакетов==
+
Для создания домена Active Directory (далее -  AD), настраиваем на сервере статический ip-address и выставляем ДНС сервером себя 127.0.0.1. Далее в центре управления системой (https://localhost:8080) в разделе домен указываем "Имя домена" и выбираем "Тип домена" заполняем поля в дополнительных параметрах, нажимаем "применить".
  
После обновления системы и ядра...
+
При правильном заполнении полей, а также при наличии всех нужных пакетов, "Текущее состояние" - будет заполнено. После этого можно перезагрузить сервер.
  
Выставляем часовой пояс и синхронизируем время
 
  
timedatectl set-timezone Europe/Moscow
+
Для того что бы пользоваться ADMC нужно произвести авторизацию в Kerberos командой kinit <имя пользователя> по умолчанию пользователь "Administrator"
ntpdate pool.ntp.org
+
Если возникает ошибка - Откройте от имени суперпользователя файл /etc/krb5.conf.
  
Отключаем сервисы и устанавливаем необходимые пакеты
+
Проверяем что установлено значение false в строке "dns_lookup_realm = false".
  
<pre>
+
Раскомментируйте строку в [libdefaults] "default realm" и введите название области заглавными буквами.
for service in smb nmb; do systemctl disable $service; systemctl stop $service; done
 
apt-get install -y task-samba-dc admc
 
</pre>
 
  
==Подготовка конфигурационных файлов ситемы==
+
Ниже, под строкой [realms] вместо EXAMPLE.COM введите название области, а вместо example.com в "default domain" введите IP-адрес сервера.
  
Задаём имя хоста
+
Под строкой [domain_realm] example.com и EXAMPLE.COM замените на ваш домен сохраняя регистр.
  
hostnamectl set-hostname dc.domain.alt
 
  
Также проверить и при необходимости поправить имя хоста в файле
+
На клиенте устанавливаем пакет для наследования групповых политик alterator-gpudate
 +
Ставим статику и прописываем DNS - адрес сервера AD
  
/etc/sysconfig/network
+
Ввод в домен можно осуществить в разделе Аутентификация
  
Перезагрузиться для проверки
+
Выбрать пункт «Домен Active Directory», заполнить поля и нажать кнопку «Применить»
  
reboot
+
В открывшемся окне необходимо ввести имя пользователя, имеющего право вводить машины в домен, и его пароль и нажать кнопку «ОК»
 
 
Далее настраиваем 127.0.0.1 в качестве DNS сервера системы (далее в команде создания домена мы добавим возможность для этого DNS сервера делать запросы к внешним DNS серверам)
 
 
 
<pre>
 
cat << EOF > /etc/resolv.conf
 
# Generated by resolvconf
 
# Do not edit manually, use
 
# /etc/net/ifaces/<interface>/resolv.conf instead.
 
search alt
 
nameserver 127.0.0.1
 
EOF
 
</pre>
 
 
 
Здесь приведена команда конфигурирования файла /etc/hosts, исходя из того, что у настраиваемого сервера локальный IP-адрес: 192.168.0.249
 
 
 
<pre>
 
cat << EOF > /etc/hosts
 
192.168.0.249 dc.domain.alt domain.alt
 
127.0.0.1 localhost
 
EOF
 
</pre>
 
 
 
==Создание домена одной командой==
 
 
 
Перед выполнением команды создания домена нужно удалить конфигурационный файл:
 
 
 
/bin/rm -rf /etc/samba/smb.conf /var/lib/samba /var/cache/samba
 
mkdir -p /var/lib/samba/sysvol
 
 
 
Для домена
 
 
 
domain.alt
 
 
 
с паролем
 
 
 
Pa$$word
 
 
 
и адресом внешнего DNS сервера
 
 
 
8.8.8.8
 
 
 
команда создания домена будет такой:
 
 
 
samba-tool domain provision --realm=domain.alt --domain domain --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --option="dns forwarder=8.8.8.8"
 
 
 
==Включение сервиса и проверка работы домена==
 
 
 
Включение
 
 
 
systemctl enable --now samba
 
 
 
Проверка
 
 
 
samba-tool domain info 127.0.0.1
 
 
 
В ответ должно прилететь что-то типа этого:
 
 
 
<pre>
 
Forest          : domain.alt
 
Domain          : domain.alt
 
Netbios domain  : DOMAIN
 
DC name          : dc.domain.alt
 
DC netbios name  : DC
 
Server site      : Default-First-Site-Name
 
Client site      : Default-First-Site-Name
 
</pre>
 
 
 
==Настройка Kerberos==
 
 
 
/bin/cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
 
 
 
 
 
==Управление пользователями из командной строки==
 
 
 
===Создать пользователя с паролем===
 
 
 
Например, создаём пользователя ivanov_ivan
 
 
 
samba-tool user create ivanov_ivan
 
 
 
Устанавливаем срок действия пароля
 
 
 
samba-tool user setexpiry ivanov_ivan
 
 
 
Создаём пользователя с указанием полного имени, адреса электронной почты и пароль будет действовать всегда
 
 
 
samba-tool user create ivanov_ivan --given-name='Иванов Иван' --mail-address='ivanovi@mail.ru'
 
samba-tool user setexpiry ivanov_ivan --noexpiry
 
 
 
===Удалить пользователя===
 
 
 
samba-tool user delete ivanov_ivan
 
 
 
===Отключить пользователя===
 
 
 
samba-tool user disable ivanov_ivan
 
 
 
===Включить пользователя===
 
 
 
samba-tool user enable ivanov_ivan
 
 
 
===Изменить пароль пользователя===
 
 
 
samba-tool user setpassword ivanov_ivan
 
 
 
===Просмотреть доступных пользователей===
 
 
 
samba-tool user list
 
 
 
===Просмотр информации о пользователе===
 
 
 
samba-tool user show ivanov_ivan
 
 
 
или, чтобы узнать UID и GID (например, для установки владельца на каталог samba)
 
 
 
wbinfo -i ivanov_ivan
 
 
 
в ответ должно прийти что-то типа
 
 
 
DOMAIN\ivanov_ivan:*:3000023:100::/home/DOMAIN.ALT/ivanov_ivan:/bin/bash
 
 
 
где UID это 3000023 а GID это 100
 
 
 
===Создание домашнего каталога для пользователя===
 
 
 
Пока вручную. Ведётся работа над интеграцией соответствующего скрипта в процесс добавления пользователя в SAMBA
 
 
 
Перед выполнением команд добавления домашнего каталога на основе /etc/skel конкретно в контексте этой статьи нужно добавить в /etc/skel каталог, который позже буде монтироваться каждому пользователю посредством pam_mount. Для этого нужно выполнить команду
 
 
 
mkdir /etc/skel/share
 
 
 
далее на базе скелетона создаём каталог
 
 
 
cp -rp /etc/skel /home/DOMAIN.ALT/ivanov_ivan
 
 
 
потом меняем пользователя владельца и группу владельца на этот каталог на базе информации из wbinfo (пример команды -- выше)
 
 
 
chown 3000023:100 /home/DOMAIN.ALT/ivanov_ivan -R
 
 
 
===Создание домашнего каталога для пользователя при первом входе===
 
 
 
В контексте этой статьи это решается запуском скрипта через параметр
 
 
 
root preexec = /usr/local/samba/bin/create_homedir %U
 
 
 
, добавленный к ресурсу
 
 
 
[share]
 
 
 
Задача, которую решает этот скрипт -- создание домашних каталогов для доменных пользователей на основе скелетона /etc/skel. В будущем это будет нужно для монтирования каталогов на клиентских машинах посредством pam_mount.
 
 
 
Полный конфиг ресурса
 
 
 
<pre>
 
[share]
 
        path = /home/DOMAIN.ALT/%U/share
 
        root preexec = /usr/local/samba/bin/create_homedir %U
 
        read only = No
 
        browseable = yes
 
        writable = yes
 
        valid users = "@DOMAIN\Domain Users" "@DOMAIN\Domain Admins"
 
</pre>
 
 
 
Параметр указывает на выполнение скрипта, параметром в который прилетает имя пользователя. Создаём скрипт
 
 
 
mkdir -p /usr/local/samba/bin/
 
 
 
<pre>
 
cat << 'EOF' > /usr/local/samba/bin/create_homedir
 
#!/bin/bash
 
[ -z ${1} ] && echo "Try: $0 <username>" && exit 1
 
user="${1}"
 
homepath="/home/DOMAIN.ALT/${user}"
 
[ -d ${homepath} ] || /bin/cp -rp /etc/skel ${homepath}
 
[ -d ${homepath} ] && /bin/chown `wbinfo -i ${user} | awk -F ':' {'print $3 ":" $4'}` ${homepath} -R
 
exit 0
 
EOF
 
</pre>
 
 
 
chmod +x /usr/local/samba/bin/create_homedir
 
 
 
mkdir /home/DOMAIN.ALT
 
 
 
Теперь при обращении пользователя к ресурсу [share] от суперпользователя будет запускаться скрипт, который:
 
 
 
1. Создаёт домашний каталог на основе /etc/skel (создаёт, только, если каталога несуществует)
 
 
 
2. Обновляет пользователя-владельца и группу-владельца для созданного каталога. UID пользователя-владельца и GID группы-владельца скрипт получает из команды (обновляет, только если каталог существует)
 
wbinfo -i ${user} | awk -F ':' {'print $3 ":" $4'}
 
 
 
==Запуск ADMC==
 
 
 
Для корректной работы приложения ADMC необходимо получить билет Kerberos командой
 
 
 
kinit Administrator
 
 
 
В ответ необходимо ввести пароль от доменного администратора
 
 
 
 
 
Чтобы это автоматизировать, можно, например, сделать скрипт автоматического запуска admc
 
 
 
<pre>
 
cat << 'EOF' > /opt/admc.sh
 
#!/bin/bash
 
echo 'Pa$$word' | kinit Administrator
 
admc
 
EOF
 
 
 
chmod +x /opt/admc.sh
 
</pre>
 
 
 
 
 
Если необходимо, то:
 
 
 
ln -s /opt/admc.sh /home/administrator/Рабочий\ стол/
 
 
 
=Порядок ввода в домен компьютера под управлением ОС Альт Стартеркит MATE=
 
 
 
==Подготовка==
 
 
 
Устанавливаем пакеты
 
 
 
apt-get install alterator-auth sssd-ad samba-common-tools realmd
 
 
 
Выставляем часовой пояс и синхронизируем время
 
 
 
timedatectl set-timezone Europe/Moscow
 
ntpdate pool.ntp.org
 
 
 
Задаём имя хоста
 
 
 
hostnamectl set-hostname host-arm01
 
 
 
Также проверить и при необходимости поправить имя хоста в файле
 
 
 
/etc/sysconfig/network
 
 
 
Перезагрузиться для проверки
 
 
 
reboot
 
 
 
==Ввод компьютера в домен одной командой==
 
 
 
 
 
Команда ввода компьютера с именем хоста
 
 
 
host-arm01
 
 
 
в домен
 
 
 
domain.alt
 
 
 
с паролем
 
 
 
Pa$$word
 
 
 
будет такой:
 
 
 
system-auth write ad domain.alt host-arm01 domain 'administrator' 'Pa$$word'
 
 
 
==Вывод компьютера из домена==
 
 
 
В контексте этой статьи компьютер из домена выводится командой, вводимой на самом компьютере (не на сервере):
 
 
 
realm leave domain.alt Administrator
 
 
 
Проверка текущего типа аутентификации
 
 
 
control system-auth
 
 
 
=Монтирование каталогов по SAMBA=
 
 
 
==На сервере==
 
 
 
===Добавляем параметры в конфиг самбы и перезапускаем сервис===
 
 
 
<pre>
 
cat << 'EOF' >> /etc/samba/smb.conf
 
[share]
 
path = /home/DOMAIN.ALT/%U/share
 
read only = No
 
browseable = yes
 
writable = yes
 
valid users = "@DOMAIN\Domain Users" "@DOMAIN\Domain Admins"
 
EOF
 
</pre>
 
 
 
systemctl restart samba
 
 
 
==На клиентском компьютере, введённом в домен==
 
 
 
 
 
===Устанавливаем необходимые пакеты===
 
 
 
apt-get install -y pam_mount cifs-utils systemd-settings-enable-kill-user-processes pam_script
 
 
 
===Конфигурируем PAM===
 
 
 
Готовая команда для создания рабочего конфига
 
 
 
<pre>
 
cat << 'EOF' > /etc/pam.d/system-auth-sss
 
#%PAM-1.0
 
 
 
auth [success=5 perm_denied=ignore default=die] pam_localuser.so
 
auth [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
 
auth [default=1] pam_permit.so
 
auth optional pam_mount.so
 
auth substack system-auth-sss-only
 
auth [default=1] pam_permit.so
 
auth substack system-auth-local-only
 
auth substack system-auth-common
 
 
 
account [success=4 perm_denied=ignore default=die]pam_localuser.so
 
account [success=1 default=bad]pam_succeed_if.so uid >= 500 quiet
 
account [default=1] pam_permit.so
 
account substack system-auth-sss-only
 
account [default=1] pam_permit.so
 
account substack system-auth-local-only
 
account substack system-auth-common
 
 
 
password [success=4 perm_denied=ignore default=die] pam_localuser.so
 
password [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
 
password [default=1] pam_permit.so
 
password substack system-auth-sss-only
 
password [default=1] pam_permit.so
 
password substack system-auth-local-only
 
password substack system-auth-common
 
 
 
session [success=5 perm_denied=ignore default=die] pam_localuser.so
 
session [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
 
session [default=1] pam_permit.so
 
session required pam_mkhomedir.so silent
 
session optional pam_mount.so disable_interactive
 
session substack system-auth-sss-only
 
session [default=1] pam_permit.so
 
session substack system-auth-local-only
 
session substack system-auth-common
 
session optional pam_script.so
 
EOF
 
</pre>
 
 
 
====Добавляем скрипт в pam_script====
 
 
 
Практика показала, что при завершении пользователем сеанса НЕ происходит отмонтирования сетевого каталога share. Поэтому пришлось дополнительно использовать pam_script и настроить для завершения сессии вот такой скрипт, который выполняет команду отмонтирования при завершении сессии (который, в отличии от <cifsumount></cifsumount> секции в конфиге pam_mount, работает корректно!).
 
 
 
Готовая команда для создания скрипта
 
<pre>
 
cat << 'EOF' > /etc/pam-script/pam-script.d/umount_share_if_ses_close
 
#!/bin/bash
 
systemd-mount -u /home/DOMAIN.ALT/${PAM_USER}/share
 
exit 0
 
EOF
 
</pre>
 
 
 
===Разрешаем для всех доступ к fuse под root===
 
 
 
control fusermount public
 
 
 
===Проверка доступности ресурсов для пользователя===
 
 
 
В приведённой ниже команде проверяются ресурсы пользователя ivanov_ivan:
 
 
 
smbclient -L dc.domain.alt -U ivanov_ivan -m SMB2
 
 
 
===Монтирование ресурса вручную===
 
 
 
В приведённой ниже команде проверяются монтирование ресурса вручную для пользователя ivanov_ivan:
 
 
 
mount.cifs //dc.domain.alt/share ~/share -o vers=2.0,user=ivanov_ivan
 
 
 
Под вошедшим в ведённый в домен компьютер пользователем ivanov_ivan команда должна монтировать ресурс без запроса пароля!
 
 
 
Если проверка и монтирование вручную работает корректно, то можно настраивать pam_mount
 
 
 
====Конфигурируем pam_mount====
 
 
 
Делаем бэкап
 
 
 
cp /etc/security/pam_mount.conf.xml /etc/security/pam_mount.conf.xml.orig
 
 
 
Создаём сразу готовый файл конфигурации:
 
 
 
<pre>
 
cat << 'EOF' > /etc/security/pam_mount.conf.xml
 
<?xml version="1.0" encoding="utf-8" ?>
 
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
 
<pam_mount>
 
    <debug enable="0" />
 
    <volume uid="10000-2000200000" fstype="cifs" server="dc.domain.alt" path="share" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
 
    <cifsmount>/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS)</cifsmount>
 
    <mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
 
    <mntoptions require="nosuid,nodev" />
 
    <logout wait="0" hup="no" term="no" kill="no" />
 
    <mkmountpoint enable="1" remove="true" />
 
</pam_mount>
 
EOF
 
</pre>
 
 
 
===Основной принцип работы===
 
 
 
В контексте данной статьи сервер и pam_mount на клиентской машине настроены таким образом, чтобы при входе доменного пользователя в систему в домашний каталог этого пользователя автоматически подключался ресурс, который на компьютере пользователя будет находиться в каталоге
 
 
 
/home/DOMAIN.ALT/ivanov_ivan/share
 
 
 
и будет смонтирован в каталог на сервере с точно таким же расположением, т.е.
 
 
 
/home/DOMAIN.ALT/ivanov_ivan/share
 
 
 
Следовательно, локально пользователь ivanov_ivan будет работать на конкретной машине, введённой в домен в локальном каталоге
 
 
 
/home/DOMAIN.ALT/ivanov_ivan
 
 
 
и результат работы будет сохраняться только на локальной машине.
 
 
 
Но файлы, с которыми пользователь ivanov_ivan работает на локальной машине A именно в каталоге
 
 
 
/home/DOMAIN.ALT/ivanov_ivan/share
 
 
 
, будут фактически сохраняться в каталоге
 
 
 
/home/DOMAIN.ALT/ivanov_ivan/share
 
 
 
файлового сервера на машине контроллера домена (и не будут сохраняться в таком же каталоге локальной машины) и в случае, когда пользователь ivanov_ivan будет работать на машине B, введённой в этот же домен, то в каталоге
 
 
/home/DOMAIN.ALT/ivanov_ivan/share
 
 
 
пользователю ivanov_ivan будут доступны те же файлы, с которыми он работал на машине A.
 
 
 
=Готовые конфиги для клиента и сервера, в контексте задачи, описанной в данной статье=
 
 
 
==Для сервера==
 
 
 
===Файл /etc/samba/smb.conf===
 
 
 
<pre>
 
# Global parameters
 
[global]
 
dns forwarder = 8.8.8.8
 
netbios name = DC
 
realm = DOMAIN.ALT
 
server role = active directory domain controller
 
workgroup = DOMAIN
 
 
 
[sysvol]
 
path = /var/lib/samba/sysvol
 
read only = No
 
 
 
[netlogon]
 
path = /var/lib/samba/sysvol/domain.alt/scripts
 
read only = No
 
 
 
[share]
 
path = /home/DOMAIN.ALT/%U/share
 
root preexec = /usr/local/samba/bin/create_homedir %U
 
read only = No
 
browseable = yes
 
writable = yes
 
valid users = "@DOMAIN\Domain Users" "@DOMAIN\Domain Admins"
 
</pre>
 
 
 
===Вывод команды testparm===
 
<pre>
 
Load smb config files from /etc/samba/smb.conf
 
Loaded services file OK.
 
Weak crypto is allowed
 
 
 
Server role: ROLE_ACTIVE_DIRECTORY_DC
 
 
 
Press enter to see a dump of your service definitions
 
 
 
# Global parameters
 
[global]
 
dns forwarder = 8.8.8.8
 
passdb backend = samba_dsdb
 
realm = DOMAIN.ALT
 
server role = active directory domain controller
 
workgroup = DOMAIN
 
rpc_server:tcpip = no
 
rpc_daemon:spoolssd = embedded
 
rpc_server:spoolss = embedded
 
rpc_server:winreg = embedded
 
rpc_server:ntsvcs = embedded
 
rpc_server:eventlog = embedded
 
rpc_server:srvsvc = embedded
 
rpc_server:svcctl = embedded
 
rpc_server:default = external
 
winbindd:use external pipes = true
 
idmap config * : backend = tdb
 
map archive = No
 
vfs objects = dfs_samba4 acl_xattr
 
 
 
 
 
[sysvol]
 
path = /var/lib/samba/sysvol
 
read only = No
 
 
 
 
 
[netlogon]
 
path = /var/lib/samba/sysvol/domain.alt/scripts
 
read only = No
 
 
 
 
 
[share]
 
path = /home/DOMAIN.ALT/%U/share
 
read only = No
 
root preexec = /usr/local/samba/bin/create_homedir %U
 
valid users = "@DOMAIN\Domain Users" "@DOMAIN\Domain Admins"
 
</pre>
 
 
 
===Файл /usr/local/samba/bin/create_homedir===
 
<pre>
 
#!/bin/bash
 
[ -z ${1} ] && echo "Try: $0 <username>" && exit 1
 
user="${1}"
 
homepath="/home/DOMAIN.ALT/${user}"
 
[ -d ${homepath} ] || /bin/cp -rp /etc/skel ${homepath}
 
[ -d ${homepath} ] && /bin/chown `wbinfo -i ${user} | awk -F ':' {'print $3 ":" $4'}` ${homepath} -R
 
exit 0
 
</pre>
 
 
 
===Файл /etc/krb5.conf===
 
<pre>
 
[libdefaults]
 
default_realm = DOMAIN.ALT
 
dns_lookup_realm = false
 
dns_lookup_kdc = true
 
 
 
[realms]
 
DOMAIN.ALT = {
 
default_domain = domain.alt
 
}
 
 
 
[domain_realm]
 
dc = DOMAIN.ALT
 
</pre>
 
 
 
===Файл /etc/sysconfig/network===
 
<pre>
 
# When set to no, this may cause most daemons' initscripts skip starting.
 
NETWORKING=yes
 
 
 
# Used by hotplug/pcmcia/ifplugd scripts to detect current network config
 
# subsystem.
 
CONFMETHOD=etcnet
 
 
 
# Used by rc.sysinit to setup system hostname at boot.
 
HOSTNAME=dc.alt
 
 
 
# This is used by ALTLinux ppp-common to decide if we want to install
 
# nameserver lines into /etc/resolv.conf or not.
 
RESOLV_MODS=yes
 
</pre>
 
 
 
===Файл /etc/resolv.conf===
 
<pre>
 
# Generated by resolvconf
 
# Do not edit manually, use
 
# /etc/net/ifaces/<interface>/resolv.conf instead.
 
search domain.alt
 
nameserver 127.0.0.1
 
</pre>
 
 
 
===Файл /etc/hosts===
 
<pre>
 
192.168.0.249 dc.domain.alt domain.alt
 
127.0.0.1 localhost
 
</pre>
 
 
 
===Файл /etc/hostname===
 
 
 
dc.domain.alt
 
 
 
===Файл /opt/admc.sh===
 
 
 
Файл не обязательный. Просто синтаксический сахар для запуска admc без необходимости выполнять вручную kinit Administrator и вводить пароль.
 
 
 
<pre>
 
#!/bin/bash
 
echo 'Pa$$word' | kinit Administrator
 
admc
 
</pre>
 
 
 
Разместить симлинк на этот файл можно, например, так
 
 
 
ln -s /opt/admc.sh /home/administrator/Рабочий\ стол/
 
 
 
==Для клиента==
 
 
 
===Файл /etc/resolv.conf===
 
 
 
В этом примере файла адрес DNS сервера должен быть адресом домена, в который необходимо вводить клиента. Выше описана процедура развёртывания домена и сделан акцент на том, что домен через себя должен пропускать работу DNS сервера. Если DNS сервер не будет узнавать контроллер домена по имени, процедура ввода завершится с ошибкой.
 
 
 
<pre>
 
/etc/resolv.conf
 
# Generated by resolvconf
 
# Do not edit manually, use
 
# /etc/net/ifaces/<interface>/resolv.conf instead.
 
search domain.alt
 
nameserver 192.168.0.249
 
</pre>
 
 
 
===Файл /etc/hosts===
 
<pre>
 
127.0.0.1 localhost.localdomain localhost
 
</pre>
 
 
 
===Файл /etc/hostname===
 
 
 
host-arm01.domain.alt
 
 
 
===Файл /etc/sysconfig/network===
 
<pre>
 
# When set to no, this may cause most daemons' initscripts skip starting.
 
NETWORKING=yes
 
 
 
# Used by hotplug/pcmcia/ifplugd scripts to detect current network config
 
# subsystem.
 
CONFMETHOD=etcnet
 
 
 
# Used by rc.sysinit to setup system hostname at boot.
 
HOSTNAME=host-arm01.domain.alt
 
 
 
# This is used by ALTLinux ppp-common to decide if we want to install
 
# nameserver lines into /etc/resolv.conf or not.
 
RESOLV_MODS=yes
 
</pre>
 
 
 
===Файл /etc/pam.d/system-auth-sss===
 
<pre>
 
#%PAM-1.0
 
 
 
auth [success=5 perm_denied=ignore default=die] pam_localuser.so
 
auth [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
 
auth [default=1] pam_permit.so
 
auth optional pam_mount.so
 
auth substack system-auth-sss-only
 
auth [default=1] pam_permit.so
 
auth substack system-auth-local-only
 
auth substack system-auth-common
 
 
 
account [success=4 perm_denied=ignore default=die]pam_localuser.so
 
account [success=1 default=bad]pam_succeed_if.so uid >= 500 quiet
 
account [default=1] pam_permit.so
 
account substack system-auth-sss-only
 
account [default=1] pam_permit.so
 
account substack system-auth-local-only
 
account substack system-auth-common
 
 
 
password [success=4 perm_denied=ignore default=die] pam_localuser.so
 
password [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
 
password [default=1] pam_permit.so
 
password substack system-auth-sss-only
 
password [default=1] pam_permit.so
 
password substack system-auth-local-only
 
password substack system-auth-common
 
 
 
session [success=5 perm_denied=ignore default=die] pam_localuser.so
 
session [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
 
session [default=1] pam_permit.so
 
session required pam_mkhomedir.so silent
 
session optional pam_mount.so disable_interactive
 
session substack system-auth-sss-only
 
session [default=1] pam_permit.so
 
session substack system-auth-local-only
 
session substack system-auth-common
 
session optional pam_script.so
 
</pre>
 
 
 
===Файл /etc/security/pam_mount.conf.xml===
 
<pre>
 
<?xml version="1.0" encoding="utf-8" ?>
 
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
 
<pam_mount>
 
    <debug enable="0" />
 
    <volume uid="10000-2000200000" fstype="cifs" server="dc.domain.alt" path="share" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
 
    <cifsmount>/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS)</cifsmount>
 
    <mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
 
    <mntoptions require="nosuid,nodev" />
 
    <logout wait="0" hup="no" term="no" kill="no" />
 
    <mkmountpoint enable="1" remove="true" />
 
</pam_mount>
 
</pre>
 
 
 
===Файл /etc/pam-script/pam-script.d/umount_share_if_ses_close===
 
<pre>
 
#!/bin/bash
 
systemd-mount -u /home/DOMAIN.ALT/${PAM_USER}/share
 
exit 0
 
</pre>
 
 
 
=Пакетное добавление пользователей=
 
 
 
==Формат файла для импорта==
 
 
 
На примере файла с тремя пользователями...
 
 
 
Такой файл можно получить, например, на основе электронной таблицы .ods или .xls(x)
 
 
 
Формат и порядок столбцов данных следующий:
 
 
 
<pre>
 
фамилия,имя,отчество,логин,емэйл,пароль
 
</pre>
 
 
 
Файл демонстрирует то, что импортируемые пользователи могут не содержать имени или отчества, но на месте фамилии обязательно должен присутствовать какой-либо текст, должен быть обязательно логин, емэйл и пароль
 
 
 
<pre>
 
cat << 'EOF' > /opt/users.csv
 
Петрова,Мария,Ивановна,petrova_mi,petrova_mi@mail.ru,Qwe123!@#
 
Сидоров,Иван,,sidorov_i,sidorov_i@mail.ru,Qwe123!@#
 
Вася,,,vasya,vasya@mail.ru,Qwe123!@#
 
EOF
 
</pre>
 
 
 
==Скрипт для пакетного импорта==
 
 
 
<pre>
 
cat << 'EOF' > /opt/batch_create_dc_users.sh
 
#!/bin/bash
 
 
 
while read -r line;
 
do
 
f=`echo $line | awk -F ',' {'print $1'}`
 
i=`echo $line | awk -F ',' {'print $2'}`
 
o=`echo $line | awk -F ',' {'print $3'}`
 
login=`echo $line | awk -F ',' {'print $4'}`
 
email=`echo $line | awk -F ',' {'print $5'}`
 
password=`echo $line | awk -F ',' {'print $6'}`
 
 
 
if [ -z $i ] && [ -z $o ]; then
 
samba-tool user create "${login}" "${password}" --surname="${f}" --mail-address="${email}"
 
else
 
 
 
given_name=''
 
if [ -z $o ]; then
 
given_name="${i}"
 
else
 
given_name="${i} ${o}"
 
fi
 
 
 
samba-tool user create "${login}" "${password}" --surname="${f}" --given-name="${given_name}" --mail-address="${email}"
 
fi
 
 
 
samba-tool user setexpiry "${login}" --noexpiry
 
done < /opt/users.csv
 
EOF
 
</pre>
 
 
 
==Запуск скрипта==
 
 
 
chmod +x /opt/batch_create_dc_users.sh
 
 
 
/opt/batch_create_dc_users.sh
 
 
 
=Источники=
 
 
 
В разном порядке использовались следующие источники
 
 
 
[https://docs.altlinux.org/ru-RU/alt-kworkstation/10.0/html/alt-kworkstation/ch52s07.html]
 
 
 
[https://docs.altlinux.org/ru-RU/alt-workstation/10.0/html/alt-workstation/ch44s06s02.html]
 
 
 
[https://docs.altlinux.org/ru-RU/alt-kworkstation/10.0/html/alt-kworkstation/system-management--sambadc--chapter.html]
 
 
 
[https://docs.altlinux.org/ru-RU/domain/10.2/html/samba/index.html]
 
 
 
[https://www.altlinux.org/Fileserver_start]
 
 
 
[https://www.altlinux.org/ActiveDirectory/DC#Troubleshooting]
 
 
 
[https://docs.altlinux.org/ru-RU/domain/10.2/html/samba/ch07s09s02.html]
 
 
 
[https://www.altlinux.org/ActiveDirectory/Login/DC]
 

Версия 22:13, 5 декабря 2023

Устанавливаем нужные пакеты task-samba-dc admc

Для создания домена Active Directory (далее -  AD), настраиваем на сервере статический ip-address и выставляем ДНС сервером себя 127.0.0.1. Далее в центре управления системой (https://localhost:8080) в разделе домен указываем "Имя домена" и выбираем "Тип домена" заполняем поля в дополнительных параметрах, нажимаем "применить".

При правильном заполнении полей, а также при наличии всех нужных пакетов, "Текущее состояние" - будет заполнено. После этого можно перезагрузить сервер.


Для того что бы пользоваться ADMC нужно произвести авторизацию в Kerberos командой kinit <имя пользователя> по умолчанию пользователь "Administrator" Если возникает ошибка - Откройте от имени суперпользователя файл /etc/krb5.conf.

Проверяем что установлено значение false в строке "dns_lookup_realm = false".

Раскомментируйте строку в [libdefaults] "default realm" и введите название области заглавными буквами.

Ниже, под строкой [realms] вместо EXAMPLE.COM введите название области, а вместо example.com в "default domain" введите IP-адрес сервера.

Под строкой [domain_realm] example.com и EXAMPLE.COM замените на ваш домен сохраняя регистр.


На клиенте устанавливаем пакет для наследования групповых политик alterator-gpudate Ставим статику и прописываем DNS - адрес сервера AD

Ввод в домен можно осуществить в разделе Аутентификация

Выбрать пункт «Домен Active Directory», заполнить поля и нажать кнопку «Применить»

В открывшемся окне необходимо ввести имя пользователя, имеющего право вводить машины в домен, и его пароль и нажать кнопку «ОК»