它应该是什么样子:我的 Ubuntu VM 通过 SSSD 连接到我的 Active Directory 服务器。我想要一个 SFTP 服务器来监禁分配了特定 AD 组 (USR-SFTP@domain) 并且只有 SFTP 而不是 SSH 的传入用户。我的管理员用户及其分配的组 (Domain-Admins@domain) 应该仍然能够通过 SSH 但不能通过 SFTP 登录。
现在情况如何:我的 SSSD 工作正常。SFTP 让我有问题。
sssd.conf:
[sssd]
domains = domain
config_file_version = 2
services = nss, pam
default_domain_suffix = domain
[domain/domain]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = domain
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = domain
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = simple
simple_allow_groups = Domain-Admins@domain
sshd.conf:
Subsystem sftp internal-sftp
Match Group usr-sftp
ChrootDirectory /appdata/SFTPdata/%u
ForceCommand internal-sftp -d /upload
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
文件夹 /appdata/SFTPdata/%u 归 root 所有。文件夹 /appdata/SFTPdata/%u/upload 归用户所有。
当我在 sssd.conf 的允许组中添加 AD 组“usr-sftp”时,我能够通过 ssh 和 sftp 进行连接,但会被定向到 /home。
我不知道我在这一点上做错了什么。
似乎不可能在 SSSD 中拥有一个域配置并且能够单独的组权限,或者至少我没有找到它。所以我的解决方案如下
sssd.conf
注意:指定您在
[sssd]
(domains = domain1.lan, domain2.lan
) 下创建的域空间 如图所示在配置中设置正确的域名,但simple_allow_groups
使用您指定的域后缀 ([email protected]) 此配置还包括 SSH 公钥身份验证。我知道我不必使用全名,但在这种情况下,我想使用它,因为它使通过 ssh 或 sftp 登录更容易。为了能够使用管理员用户登录节点,您必须使用
ssh [email protected]@server
. 这是迄今为止唯一的缺点,但我可以忍受。sshd_config
:随着 SSSD 配置到位,我终于能够完全应用 sshd 配置,我现在能够解析广告组并且一切正常。此时唯一重要的是正确的文件夹权限。
可能有一个更有效的解决方案,我很高兴知道它,但到目前为止,这一切正常。