我已经为此工作了 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\ Users
、Domain\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”更难。