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
    • 最新
    • 标签
主页 / server / 问题 / 1045956
Accepted
Poehli
Poehli
Asked: 2020-12-13 11:33:14 +0800 CST2020-12-13 11:33:14 +0800 CST 2020-12-13 11:33:14 +0800 CST

ubuntu 忽略 default_ccache_name

  • 772

我在使用 Kerberos 和 Ubuntu 20.04 时遇到问题。
我正在运行一个 FreeIPA 服务器,但由于它可以在我的 Centos 机器上运行,我想这是一个客户端问题。

最大的目标是拥有一个 SSO 系统,用于多种服务。大多数情况下它按预期工作,但有一件事拒绝为我工作:
让 automount/autofs 接受我的 Kerberos 配置。一个主要问题是 autofs 无法读取KRB5CCNAME环境变量。它总是使用 libdefault,如果 Ubuntu 也这样做的话,那很好。但是,出于某种原因,无论我尝试什么,Ubuntu 都不会设置 KRB5CCNAME 环境。变种。在正确登录部分期间,但始终默认为FILE:/tmp/krb5cc_\<UID>_\<VALUE>.
我更喜欢使用密钥环,所以我写default_ccache_name = KEYRING:persistent:%{uid}在 libdefaults 部分的 krb5.conf 中。当手动设置 KRB5CCNAME 时,一切都很好,自动挂载连接到我的 samba 驱动器。
但是让系统决定变量应该包含什么,总是会导致FILE:...

我的客户 krb5.conf 如下所示:

includedir /etc/krb5.conf.d/
includedir /var/lib/sss/pubconf/krb5.include.d/

[logging]
  default = FILE:/var/log/krb5.log

[libdefaults]
  default_realm = EXAMPLE.COM
  dns_lookup_realm = true
  dns_lookup_kdc = true
  rdns = false
  dns_canonicalize_hostname = false
  ticket_lifetime = 24h
  forwardable = true
  udp_preference_limit = 0
  default_ccache_name = KEYRING:persistent:%{uid}
  ccache_type = 4

[realms]
  EXAMPLE.COM = {
    kdc = ipa.example.com:80
    master_kdc = ipa.example.com:88
    admin_server = ipa.example.com:749
    kpasswd_server = ipa.example.com:464
    default_domain = example.com
    pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem
    pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle.pem

  }


[domain_realm]
  .example.com = <EXAMPLE.COM>
  example.com = <EXAMPLE.COM>
  client.example.com = <EXAMPLE.COM>

SSSD 配置:

[domain/example.com]
debug_level=10
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = EXAMPLE.COM
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = client.example.com
chpass_provider = ipa
ipa_server = _srv_, ipa.example.com
ldap_tls_cacert = /etc/ipa/ca.crt
ldap_search_base = cn=accounts,dc=example,dc=com
krb5_ccname_template = KEYRING:persistent:%U

[sssd]
services = nss, sudo, pam, ssh
config_file_version = 2
domains = example.com
debug_level=10
[nss]
override_shell = /bin/bash

[pam]
offline_credentials_expiration = 60
debug_level=10

[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
ldap_access_filter = (objectClass=posixAccount)
debug_level=10
[ssh]

[sudo]

有任何想法吗?

ubuntu kerberos ubuntu-20.04 freeipa mitkerberos
  • 1 1 个回答
  • 1152 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2020-12-15T03:59:08+08:002020-12-15T03:59:08+08:00

    始终默认为FILE:/tmp/krb5cc_<UID>_<VALUE>

    如果 KRB5CCNAME 指向带有随机后缀的缓存,这表明某些软件已决定显式设置隔离缓存而不是使用默认缓存。

    (默认值根本没有放在 KRB5CCNAME 中——它的目的是在环境变量不存在时使用。最重要的是,如果它使用传统的默认路径,你实际上会得到FILE:/tmp/krb5cc_<UID>没有额外的随机值结束。)

    我使用 repo 中的 freeipa-client 包安装了所有东西。它安装了 pam_krb5 并在 common-password、-account、-session(-interactive) 和 -auth 中使用它。sss 用于 common-password、-account、-session、-auth 和一些 .pam-olds

    您的问题是密码由两个独立的模块针对 Kerberos 进行验证:一次由 pam_sss (SSSD) 和一次由 pam_krb5。它们都使用唯一的每个会话缓存,并且它们都将 KRB5CCNAME 设置为这种基于文件的临时缓存路径。

    理想情况下,您根本不应该使用 pam_krb5 - SSSD 已经在其 FreeIPA 集成中完成了相同的任务。如果所有 PAM 配置已在同一部分中调用 pam_sss,请考虑在所有 PAM 配置中禁用它们。

    如果这是不可能的,pam_krb5 有自己的每个会话缓存模板的参数,可以在/etc/krb5.conf(或直接在 PAM 配置中设置,但这不方便):

    • Russ Allbery 的 pam_krb5(由 Debian/Ubuntu/Arch 使用):

      [appdefaults]
          pam = {
              ccache = KEYRING:persistent:%u
          }
      
    • Fedora 的 pam_krb5:

      [appdefaults]
          pam = {
              ccname_template = KEYRING:persistent:%U
          }
      

    最后,请注意,当您通过 ssh 连接到启用了 GSSAPI 身份验证和委托的服务器时(例如,通过使用ssh -K),sshd本身会将委托的 TGT 存储到唯一的每个会话缓存中。此行为在 sshd 中硬编码,无法更改。

    • 1

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve