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 / 问题 / 1048219
Accepted
Stephen Winnall
Stephen Winnall
Asked: 2021-01-01 16:15:35 +0800 CST2021-01-01 16:15:35 +0800 CST 2021-01-01 16:15:35 +0800 CST

使用 LDAP:如何使用 SSH 登录,如何使用 autofs 挂载 Samba 主目录?

  • 772

考虑到 MacOS 和 Synology(我的 NAS)的特殊特性,我花了一些时间在我的 MacOS、iOS 和 Linux 网络中设置基于 LDAP 的身份验证。SSH 登录(SSH 密钥等)有效,Samba 共享挂载有效。这一切都非常繁琐,而且我现在对 LDAP 的了解比我预期的要多。

然而...

在达到我可以(至少在理论上)登录到我网络中的任何机器的程度之后,我认为用户也可以在任何地方访问同一个主目录会很好。没问题:autofs,也可以从 LDAP 管理!或者我是这么想的……

我正在尝试以下方法来设置 Samba 主目录autofs:

cn=*,ou=auto.home,cn=automount,cn=etc,dc=home,dc=arpa
cn: *
objectClass: automount
objectClass: top
automountInformation: -fstype=cifs,vers=3.0,domain=HOME,rw,username=&,uid=&,gid=& ://s-sy-00.local/home

一些背景:

  1. s-sy-00.local是我的主目录所在的 Synology NAS。
  2. /home是 Synology 为 中定义的用户提供的主目录共享的 UNC username=。

当我使用 SSH 登录到远程机器时,问题就开始了。autofs尝试挂载用户的主目录,但需要用户的密码。我可以将密码放入password=该行中的参数中automountInformation,或者我可以将用户名和密码放入与credentials=参数一起传递的凭据文件中。这两种方法都会增加复杂性(automount每个用户的条目)和重复(在两个不同的地方使用相同的用户名和密码:LDAP 和凭证文件或 LDAP 中的 theautomount和 the posixUser)。

有处理这个问题的标准方法吗?我的搜索引擎技能还没有出现任何东西。

在我看来,有三种可能的解决方案:

  1. 对其他人来说是显而易见的,但对我来说不是;
  2. 使用 SSH 密钥从 SSHFS 共享中为每个用户安装凭据文件(可能从 LDAP 动态生成);
  3. 使用 Kerberos 实现成熟的 SSO。

我更喜欢数字 1 :-) 我对 Kerberos 有反感:它似乎有点矫枉过正,而且肯定相对复杂。

任何人都可以提供一些智慧的话,让我在新的一年里有一个飞跃的开始吗?

ssh samba ldap autofs
  • 2 2 个回答
  • 1311 Views

2 个回答

  • Voted
  1. Best Answer
    user1686
    2021-01-10T11:59:24+08:002021-01-10T11:59:24+08:00

    好吧,只要您在 Linux 上并且如果您在初始登录时使用密码身份验证,那么您就可以拥有一个 PAM 模块,它将密码存储在内核密钥环中,mount.cifs 可以从中获取它。我不能 100% 确定 cifs-utils 当前是否带有一个,但它确实有一个cifscredsCLI 工具可以做到这一点。

    不过,就我个人而言,我只会设置 Kerberos 身份验证而不是 LDAP。(也就是说,让 LDAP 只做目录服务的工作。)总体而言,Kerberos 就像 LDAP:从外面看起来很复杂,但仔细观察会发现非常简单,除了数百万个怪癖、边缘情况和可追溯到 1980 年代的奇怪决定再次使其变得复杂。

    它将比特定于 SMB 的 PAM hacks 更加通用——相同的票证可用于访问 SMB、NFS、LDAP、HTTP、SSH……您甚至可以将现有的 LDAP 服务器用作 KDC 数据库后端,获得免费复制,无需处理 kprop。

    请注意,对于 mount.cifs, Kerberos 和 cifscreds都打算在通过multiuser选项挂载共享时使用,这为您提供类似 NFS 的行为 - 多个用户可以访问同一个 SMB 挂载,并且内核将自动使用每个 uid 的正确 SMB 凭据。

    至于 SSH 公钥身份验证,您可以自动执行的操作并不多——要么检索凭证文件并将其cifscreds与kinit..

    • 1
  2. Stephen Winnall
    2021-01-15T08:35:41+08:002021-01-15T08:35:41+08:00

    虽然我认为@user1686 的答案是正确的,但我仍然想分享我找到的解决方法,并将使用它,直到我有时间转向 Kerberos 解决方案。

    1. 我在我调用的 NAS 上创建了一个用户smbowner并为其分配了密码。我授予smbowner了 NAS 的管理员权限,这意味着它可以挂载 SMB 共享。

    2. 我在需要挂载 SMB 共享的机器上创建了一个 Samba 凭据文件。我把它放进去/etc/samba/credentials/s-sy-00,它看起来像这样:

    username=smbowner
    password=whatever
    

    请注意,凭证文件不包含域定义。

    1. 我将 LDAP 条目更改为以下内容:
    cn=*,ou=auto.home,cn=automount,cn=etc,dc=home,dc=arpa
    cn: *
    objectClass: automount
    objectClass: top
    automountInformation: -fstype=cifs,vers=3.0,domain=HOME,rw,credentials=/etc/samba/credentials/s-sy-00,uid=&,gid=& ://s-sy-00.local/&
    

    在其辩护中,可以说这个解决方案是有效的,尽管我不确定在比我更恶劣的环境中它有多安全。

    它是如何工作的?smbowner有足够的权限在 NAS 上挂载任何共享。和uid=&参数gid=&确保本地用户可以访问共享。稍后我将尝试设置 NAS 上共享的权限。

    也许这会帮助别人。

    史蒂夫

    • 0

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

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

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