SDDM перестала работать, когда PAM_MOUNT используется

У меня есть новая установка Kubuntu 18.04.1 с аутентификацией пользователя через sssd к Microsoft Active Directory компании.

У каждого пользователя есть доля Samba на //fileserver6/$USER и я хочу смонтировать его во время входа в систему.

Мне удалось добраться pam_mount настроенный для монтирования доли каждый раз, когда пользователь входит в систему, и это хорошо работало..., пока я не вышел из KDE и обнаружил, что sddm-зазывала не работала!

Вместо приглашения ко входу в систему существует только черный экран с указателем мыши. В ниже pam_mount.conf.xml, Я могу прокомментировать <volume> тег и журнал на пути sddm, затем я могу не прокомментировать это и войти в терминальный сеанс, и каталог автосмонтирован. Но у меня не может быть обоих!

Приводя решение к сбою проблемы, я счастливо установлю другого менеджера по оформлению, если она будет работать (lightdm даже не позволит мне выбрать пользователя). [ETA: lxdm действительно работает]

/etc/security/pam_mount.conf.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
    See pam_mount.conf(5) for a description.
-->

<pam_mount>

        <!-- debug should come before everything else,
        since this file is still processed in a single pass
        from top-to-bottom -->

<debug enable="0" />

        <!-- Volume definitions -->
<volume user="*" fstype="cifs" server="fileserver6" path="%(USER)" 
        mountpoint="/media/%(USER)/p" options="cruid=%(USER),sec=krb5" />

        <!-- pam_mount parameters: General tunables -->

<luserconf name=".pam_mount.conf.xml" />

<!-- Note that commenting out mntoptions will give you the defaults.
     You will need to explicitly initialize it with the empty string
     to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />

<!-- requires ofl from hxtools to be present -->
<logout wait="0" hup="no" term="no" kill="no" />


        <!-- pam_mount parameters: Volume-related -->

<mkmountpoint enable="1" remove="true" />

</pam_mount>

/etc/pam.d/sddm

auth    requisite       pam_nologin.so
auth    required        pam_succeed_if.so user != root quiet_success

@include common-auth
-auth   optional        pam_gnome_keyring.so
-auth   optional        pam_kwallet.so
-auth   optional        pam_kwallet5.so

@include common-account

session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session optional        pam_keyinit.so force revoke
session required        pam_limits.so
session required        pam_loginuid.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
-session optional       pam_gnome_keyring.so auto_start
-session optional       pam_kwallet.so auto_start
-session optional       pam_kwallet5.so auto_start

@include common-password
session required        pam_env.so
session required        pam_env.so envfile=/etc/default/locale

/etc/pam.d/sddm-greeter

auth    required        pam_permit.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session optional        pam_keyinit.so force revoke
session required        pam_limits.so
session required        pam_loginuid.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open

password        required pam_deny.so
session required        pam_env.so
session required        pam_env.so envfile=/etc/default/locale

/etc/pam.d/common-session

session [default=1]                     pam_permit.so
session requisite                       pam_deny.so
session required                        pam_permit.so
session optional                        pam_umask.so
session required        pam_unix.so 
session optional                        pam_sss.so 
session optional        pam_mount.so 
session optional        pam_systemd.so 
session optional                        pam_mkhomedir.so 

/etc/pam.d/common-auth

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_sss.so use_first_pass
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    optional        pam_mount.so 
auth    optional                        pam_cap.so 

/etc/pam.d/common-password

password        requisite                       pam_pwquality.so retry=3
password        [success=2 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512
password        sufficient                      pam_sss.so use_authtok
password        requisite                       pam_deny.so
password        required                        pam_permit.so
password        optional        pam_mount.so disable_interactive
password        optional        pam_gnome_keyring.so 
0
задан 23 November 2018 в 03:58

1 ответ

Я столкнулся с подобной проблемой также на новой установке debian тестирование (уничтожителя) с sddm 0.18.0-1.

Ниже копия сообщения, которое я добавил к sddm проблеме GitHub: https://github.com/sddm/sddm/issues/637.

tl; доктор

Измените конфигурацию pam_mount в /etc/security/pam_mount.conf.xmlдля использования расширенного пользовательского элемента управления, для исключения sddm пользователя из попытки смонтировать объем:

<volume fstype="cifs" server="fileserver6" path="%(USER)" mountpoint="/media/%(USER)/p" options="cruid=%(USER),sec=krb5">
  <not><user>sddm</user></not>
</volume>

Описание проблемы

признаки

  • Черный экран с указателем мыши, но никакое возможное взаимодействие (слева/справа щелчок мышью, клавиатура)
  • TTYs доступны
  • systemctl stop sddm && startxпозволяет мне получать рабочую среду KDE Plasma хотя

контекст

  • sddm работает правильно, пока я не устанавливаю pam_mount (libpam-смонтируйтесь для debian), и я добавляю объем в pam_mount конфигурации, такой как:
<volume fstype="cifs" server="server1.ad.lan" options="domain=MYDOMAIN,vers=3.0" path="data" mountpoint="~/mnt/server1/data" />

Быть более точным:

  • со значением по умолчанию pam_mount конфигурация (т.е. без объема), sddm отобразится правильно
  • добавление объема к конфигурации pam_mount, затем systemctl restart sddm инициирует признаки, описанные выше
  • удаление объема от конфигурации pam_mount, затем systemctl restart sddm, заставит sddm отобразиться правильно снова

Анализ

журналы

В системном журнале:

Jan 13 15:12:56 mycomputer sddm[2338]: Greeter starting...
Jan 13 15:12:56 mycomputer sddm[2338]: Adding cookie to "/var/run/sddm/{b73b2904-3de9-46d5-b2ac-a407bd3be089}"
Jan 13 15:12:56 mycomputer sddm-helper[2349]: [PAM] Starting...
Jan 13 15:12:56 mycomputer sddm-helper[2349]: [PAM] Authenticating...
Jan 13 15:12:56 mycomputer sddm-helper[2349]: [PAM] returning.
Jan 13 15:12:56 mycomputer sddm[2338]: (pam_mount.c:568): pam_mount 2.16: entering session stage
Jan 13 15:12:56 mycomputer sddm-helper[2349]: [PAM] Preparing to converse...
Jan 13 15:12:56 mycomputer sddm-helper[2349]: [PAM] Conversation with 1 messages
Jan 13 15:22:53 mycomputer sddm[2338]: Signal received: SIGTERM

скромные предположения..., чтобы быть проверенным

Как указано в GitHub:

То же самое. Мне удалось получить эту работу путем комментирования:

@include common-session

и включая все содержание common-session кроме pam_mount.so строка в /etc/pam.d/sddm-greeter, но то, когда пользователи закрыли свои сеансы pam_mount, не знает поэтому, когда они выходят из системы, их точки монтирования не становятся размонтированными.

Проблема, кажется, происходит в /etc/pam.d/sddm-greeter , при выполнении @include common-session:

  • pam_mount пытается смонтировать объем с текущим пользователем, который является sddm и сбоями
    • в моем случае, который совершенно нормален, поскольку текущий пользователь является локальным sddm один, и он не имеет никакого доступа к моему рядовому серверу домена AD

То, что я не понимаю:

  • при ручном входе в систему с локальным пользователем (например, корень), т.е. названный /etc/pam.d/login: этот pam_mount отказ проигнорирован, и вход в систему может обычно продолжаться
  • при вызове /etc/pam.d/sddm-greeter: процесс sddm ловит SIGTERM и завершается

вопросы / возможное решение

Для процесса sddm действительно ли возможно тихо проигнорировать ошибки, в которых происходят /etc/pam.d/common-session? Иначе, это возможный изменить /etc/pam.d/sddm-greeter, при помощи условий в substackвместо простого @include?
Извините, я не эксперт с pam, я не знаю, имеет ли это смысл...

Иначе, в дополнение к вышеупомянутому предложению, ниже другое возможное обходное решение:

Другое обходное решение: измените свою pam_mount конфигурацию

Как указано прежде, проблема, кажется, происходит, потому что pam_mount пытается смонтировать долю с помощью sddmпользователь, который не имеет никаких учетных данных для него.

Так, в основном мы просто должны исключить sddm пользователь (и другие, в случае необходимости), от монтирования доли. Это использует расширенные функции пользовательского элемента управления в pam_mount (ссылка).

Так, вместо того, чтобы определить объем как ниже в /etc/security/pam_mount.conf.xml:

<volume fstype="cifs" server="server1.ad.lan" options="domain=MYDOMAIN,vers=3.0" path="data" mountpoint="~/mnt/server1/data" />

Мы можем записать (3 варианта, адаптироваться к Вашим потребностям):

Различный 1: позвольте только данный диапазон UIDs

<volume fstype="cifs" server="server1.ad.lan" options="domain=MYDOMAIN,vers=3.0" path="data" mountpoint="~/mnt/server1/data" uid="5000-999999999" />

Различные 2: исключите данный диапазон UIDs

<volume fstype="cifs" server="server1.ad.lan" options="domain=MYDOMAIN,vers=3.0" path="data" mountpoint="~/mnt/server1/data">
  <not><uid>0-4999</uid></not>
</volume>

Различные 3: исключите sddm пользователя только

<volume fstype="cifs" server="server1.ad.lan" options="domain=MYDOMAIN,vers=3.0" path="data" mountpoint="~/mnt/server1/data">
  <not><user>sddm</user></not>
</volume>

Заключение

Извините за это длинное сообщение я надеюсь, что Вы найдете это полезным!

Удачи.

1
ответ дан 27 October 2019 в 02:27

Другие вопросы по тегам:

Похожие вопросы: