Bug 55828 - `mount error(13): Permission denied` при монтировании через `pam_mount` общей папки с Windows AD DC на клиенте двусторонне доверенного домена FreeIPA
Summary: `mount error(13): Permission denied` при монтировании через `pam_mount` общей...
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: samba (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-09-01 13:31 MSK by Artem Varaksa
Modified: 2025-09-01 13:31 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2025-09-01 13:31:23 MSK
Шаги
====

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