在 RHEL6 中为 LDAP 用户设置 chroot

在 RHEL6 中为 LDAP 用户设置 chroot

我已经为此工作了 2 天,即将放弃,所以请有人帮助。

我有一台 Red Hat 6 服务器加入到我的 Active Directory 域。正常情况下登录工作正常。我通过使用 /etc/security/pam_winbind.conf 文件中的 require_membership_of= 将 SSH 登录限制为特定的活动目录组。效果很好。

现在我需要锁定这些用户,使其只能访问其主目录 (chroot),并且只允许 sftp 登录。

我尝试了大约十亿种编辑 /etc/ssh/sshd_config 文件的组合,但最终要么用户不被限制在其主文件夹中,要么无法登录。当我使用本地用户/组来限制 chroot 和 sftp 登录时,以下配置工作得很好。(显然我将其更改Match group为本地用户组)

问题我思考我的事实是,LDAP 用户不是本地用户,并且他们没有本地组。这是我的 sshd_config 文件的相关部分

  Match group 'Domain Users'
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

当我重新启动 sshd 时,会出现错误/etc/ssh/sshd_config line 135: Bad Match condition 当我更改'Domain Users'为时,Domain\040Users我没有收到错误,但 LDAP 用户不限于其主目录(chroot 不起作用)。我还尝试将其更改ChrootDirectory %h为新的 /chroot 文件夹以及 /home/%u 但两者都不起作用。

我想到的可能的解决方案是

  • 更改 LDAP 用户所属的默认组(我没有在任何地方找到此设置,并且 /etc/default/useradd 的设置不适用)
  • 将 sshd_config 文件中的更改Match group为适用于域用户的内容。我尝试了'Domain Users'Domain\ UsersDomain\040Users和来自域用户组的 LDAP 的 SID。所有这些都不起作用或在重新启动 sshd 时出现错误
  • 首次登录时,让系统创建本地用户/组(但这可能会破坏密码同步到 AD
  • 还有一些我完全错过的事情。

有人有通过 LDAP 登录设置 chroot 限制的经验吗?我不知所措,认为我无法在浏览器中打开更多选项卡。

答案1

感谢 #centos 频道中的 TrevorH1,我才能够让它发挥作用。

将组与空格匹配的方法(在我的例子中是域用户)是使用 来?表示空格(标准 shell 全局模式)。这将匹配任何也有任何字符而不是空格的组,但它适合我的需要。

例如我的新sshd_config外观是这样的

 Match Group domain?users
  ChrootDirectory %h
  X11Forwarding no
  AllowTcpForwarding no
  ForceCommand internal-sftp

使用小写字符而不是域?用户对我来说也很重要。即使 LDAP 中的组是大写的。您可以通过使用找出需要过滤的组的方法,id <username>这将为您提供用户所属的所有组的列表。如果我有多个 LDAP 组(例如域用户、域!用户、域用户),这也将匹配所有可能需要或不需要的情况。

答案2

您可以尝试此匹配组“域用户”。这对我有用。即使我使用的语法比您匹配组“WORKGROUP\domain users”更难。

相关内容