我新安装了 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_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配置(即没有音量),韓規模将会正确显示
- 添加卷到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>
结论
抱歉,这篇文章太长了,我希望你会觉得它有用!
干杯。