Шаги ==== 1. Развернуть Windows AD DC на Windows Server 2012 R2. 2. Развернуть FreeIPA DC на ALT Server 11.0 x86_64 (minimal). 3. Настроить two-way trust между доменами. 4. Ввести в домен FreeIPA клиентов ALT Workstation K 11.1, Workstation, Education (KDE), Education (XFCE) 11.0 x86_64 (с помощью sssd). 5. На сервере Windows AD DC создать папку С:\winadshare, открыть Свойства > Доступ > Общий доступ, добавить Все, установить разрешение Чтение и запись. 6. На клиентах проверить монтирование командой: # mkdir -p /mnt/adshare && mount -v -t cifs -o user=testuser //<windows-ad-dc-ipv4>/winadshare /mnt/adshare && l /mnt/adshare Ввести пароль доменного пользователя. 7. Настроить `pam_mount` на клиенте: # cat > /etc/security/pam_mount.conf.xml << EOF <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd"> <pam_mount> <debug enable="1" /> <volume uid="10000-2000200000" fstype="cifs" server="<windows-ad-dc-ipv4>" path="winadshare" mountpoint="~/share" options="vers=2.0,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775,user=%(DOMAIN_USER)" /> <cifsmount>/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS)</cifsmount> <cifsumount>/sbin/umount %(MNTPT)</cifsumount> <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 (Также можно указать `user=%(USER)` вместо `user=%(DOMAIN_USER)`.) # cat > /etc/pam.d/system-auth-sss << 'EOF' #%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=2] pam_permit.so auth optional pam_mount.so disable_interactive 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=5 perm_denied=ignore default=die] pam_localuser.so password [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet password [default=2] pam_permit.so password optional pam_mount.so disable_interactive 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=6 perm_denied=ignore default=die] pam_localuser.so session [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet session [default=3] pam_permit.so session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet 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 EOF Перезагрузить клиента. 8. Войти на клиенте в пользователя из доверенного домена Windows AD, введя имя пользователя в виде `testuser@ad` (пример для realm `ad.testd`). Примечание: на KDE использовать X11 как workaround для https://bugzilla.altlinux.org/55210. Фактический результат ===================== 6. Монтирование успешно. 8. Вход успешный, но монтирование не успешно: > gdm-password][1753]: (pam_mount.c:568): pam_mount 2.18: entering session stage > gdm-password][1753]: (mount.c:781): Could not get realpath of /home/ad.testd/testuser/share: Нет такого файла или каталога > gdm-password][1753]: (mount.c:251): Mount info: globalconf, user=testuser@ad.testd <volume fstype="cifs" server="<windows-ad-dc-ipv4>" path="winadshare" mountpoint="/home/ad.testd/testuser/share" cipher="(null)" fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="vers=2.0,cruid=1615601142,nounix,uid=1615601142,gid=1615601142,file_mode=0664,dir_mode=0775,user=testuser@ad.testd" /> fstab=0 ssh=0 > gdm-password][1753]: (mount.c:305): mkmountpoint: checking /home > gdm-password][1753]: (mount.c:305): mkmountpoint: checking /home/ad.testd > gdm-password][1753]: (mount.c:305): mkmountpoint: checking /home/ad.testd/testuser > gdm-password][1753]: (mount.c:305): mkmountpoint: checking /home/ad.testd/testuser/share > gdm-password][1753]: (mount.c:329): mkdir[1615601142] /home/ad.testd/testuser/share > gdm-password][1753]: (mount.c:660): Password will be sent to helper as-is. > gdm-password][1753]: command: '/sbin/mount.cifs' '//<windows-ad-dc-ipv4>/winadshare' '/home/ad.testd/testuser/share' '-o' 'vers=2.0,cruid=1615601142,nounix,uid=1615601142,gid=1615601142,file_mode=0664,dir_mode=0775,user=testuser@ad.testd' > kernel: netfs: FS-Cache loaded > kernel: Key type dns_resolver registered > kernel: Key type cifs.spnego registered > kernel: Key type cifs.idmap registered > kernel: CIFS: enabling forceuid mount option implicitly because uid= option is specified > kernel: CIFS: enabling forcegid mount option implicitly because gid= option is specified > kernel: CIFS: Attempting to mount //<windows-ad-dc-ipv4>/winadshare > kernel: CIFS: Status code returned 0xc000006d STATUS_LOGON_FAILURE > kernel: CIFS: VFS: \\<windows-ad-dc-ipv4> Send error in SessSetup = -13 > kernel: CIFS: VFS: cifs_mount failed w/return code = -13 > gdm-password][1753]: (mount.c:68): Messages from underlying mount program: > gdm-password][1753]: (mount.c:72): mount error(13): Permission denied Ожидаемый результат =================== 6. Монтирование успешно. 8. Вход и монтирование успешны. Дополнительно ============= Если на шаге 6 ввести неправильный пароль, то такая же ошибка `mount error(13): Permission denied`. Воспроизводимость ================= Воспроизводится на виртуальных машинах: [sisyphus] ALT Workstation K 11.1, Workstation, Education (KDE), Education (XFCE) 11.0 x86_64 spice-vdagent-0.22.1-alt2.x86_64 pam_mount-2.18-alt1.x86_64 samba-4.21.7-alt4.x86_64 sssd-2.9.7-alt3.x86_64 [p11+393268.1] ALT Workstation K 11.1, Workstation, Education (KDE), Education (XFCE) 11.0 x86_64 spice-vdagent-0.22.1-alt2.x86_64 pam_mount-2.18-alt1.x86_64 samba-4.21.7-alt4.x86_64 sssd-2.9.7-alt3.x86_64 [p11] ALT Workstation K 11.1, Workstation, Education (KDE), Education (XFCE) 11.0 x86_64 spice-vdagent-0.22.1-alt2.x86_64 pam_mount-2.18-alt1.x86_64 samba-4.20.8-alt2.x86_64 sssd-2.9.7-alt1.x86_64