总结

总结

我新安装了 Kubuntu 18.04.1,并通过sssd公司的 Microsoft Active Directory 进行用户身份验证。

每个用户都有一个 Samba 共享//fileserver6/$USER,我想在登录时安装它。

我设法pam_mount将其配置为在用户登录时挂载共享,并且它运行良好...直到我退出 KDE 后,发现 sddm-greeter 不起作用!

没有登录提示,只有一个带有鼠标指针的黑屏。在下面的 中pam_mount.conf.xml,我可以注释掉<volume>标签,然后通过 登录sddm,然后我可以取消注释并登录到终端会话,目录会自动挂载。但我不能同时拥有两者!

如果无法解决问题,我会很乐意安装另一个显示管理器(如果可行的话)lightdm甚至不让我选择用户)。[预计到达时间: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/通用密码

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 

答案1

我在全新安装的 Debian 测试版(buster)上也遇到了类似的问题,sddm 0.18.0-1

以下是我发布到韓規模github 问题:https://github.com/sddm/sddm/issues/637

总结

修改pam_mount配置/etc/security/pam_mount.conf.xml使用扩展用户控制,以排除韓規模用户尝试挂载卷:

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

问题描述

症状

  • 黑屏,有鼠标指针,但无法进行交互(鼠标左键/右键单击、键盘)
  • TTY 可用
  • systemctl stop sddm && startx允许我获得一个可以工作的 KDE Plasma 环境

语境

  • sddm 工作正常,直到我安装pam_mountlibpam 安装对于 Debian)我添加了一个卷pam_mount配置,例如:
<volume fstype="cifs" server="server1.ad.lan" options="domain=MYDOMAIN,vers=3.0" path="data" mountpoint="~/mnt/server1/data" />

更准确地说:

  • 使用默认pam_mount配置(即没有音量),韓規模将会正确显示
  • 添加卷到pam_mount配置,systemctl restart sddm则会触发上述症状
  • 删除卷pam_mount配置,然后systemctl restart 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尝试使用当前用户安装该卷,即韓規模,并失败
    • 就我而言,这完全正常,因为当前用户是本地韓規模一个,但它无权访问我的 AD 域成员服务器

我不明白的是:

  • 使用本地用户手动登录时(例如)即调用/etc/pam.d/login:thispam_mount忽略失败,登录可以正常进行
  • 当被调用时/etc/pam.d/sddm-greeter韓規模 进程捕获 SIGTERM 并终止

问题/可能的解决方案

有可能韓規模进程以静默方式忽略 中发生的错误/etc/pam.d/common-session?否则,是否可以/etc/pam.d/sddm-greeter通过使用 中的条件substack而不是简单的来修改@include
抱歉,我不是 pam 专家,我不知道这是否有意义……

否则,除了上述建议之外,以下是另一种可能的解决方法:

其他解决方法:修改您的pam_mount配置

如前所述,该问题似乎是因为pam_mountsddm尝试使用没有凭证的用户安装共享。

因此,基本上,我们只需排除该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:仅允许给定范围的 UID

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

变体 2:排除给定范围的 UID

<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>

结论

抱歉,这篇文章太长了,我希望你会觉得它有用!

干杯。

相关内容