AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1095162
Accepted
Auspex
Auspex
Asked: 2018-11-23 09:01:09 +0800 CST2018-11-23 09:01:09 +0800 CST 2018-11-23 09:01:09 +0800 CST

使用 PAM_MOUNT 时 SDDM 失败

  • 772

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

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

我设法pam_mount配置为在用户登录时挂载共享,它工作正常......直到我退出 KDE,发现 sddm-greeter 不起作用!

没有登录提示,只有一个带有鼠标指针的黑屏。在下面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 
mount kubuntu cifs pam sddm
  • 1 1 个回答
  • 1479 Views

1 个回答

  • Voted
  1. Best Answer
    pterrien
    2019-01-14T07:42:32+08:002019-01-14T07:42:32+08:00

    在使用sddm 0.18.0-1全新安装 debian testing (buster) 时,我也遇到了类似的问题。

    以下是我发布到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>
    

    问题描述

    症状

    • 有鼠标指针的黑屏,但没有可能的交互(鼠标左/右键单击、键盘)
    • 可访问 TTY
    • systemctl stop sddm && startx让我得到一个工作的 KDE Plasma 环境

    语境

    • sddm 正常工作,直到我安装pam_mount(libpam-mount用于 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.soat 行之外的所有内容/etc/pam.d/sddm-greeter,但是当用户关闭他们的会话时 pam_mount 是不知道的,因此当他们注销时,他们的安装点不会被卸载。

    /etc/pam.d/sddm-greeter执行时,问题似乎发生在@include common-session:

    • pam_mount尝试使用当前用户(即sddm )安装卷,但失败
      • 就我而言,这是完全正常的,因为当前用户是本地sddm用户,它无法访问我的 AD 域成员服务器

    我不明白的是:

    • 当使用本地用户(例如root)手动登录时,即调用者/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:仅允许给定范围的 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>
    

    结论

    很抱歉这篇长篇文章,我希望你会发现它有用!

    干杯。

    • 3

相关问题

  • 修复 USB 驱动器自动通知

  • 如何在 Kubuntu 中获得 Cantor 的 R 后端?

  • 是否有更好的方式为 /home/userX 构建分区/挂载

  • 当另一个文件系统安装在路径上时是否可以删除文件?

  • 为什么我的 Kubuntu 会话在恢复后需要相当长的时间才能响应?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve