将用户组限制到 Win2016 服务器中的特定文件夹

将用户组限制到 Win2016 服务器中的特定文件夹

首先,我对这个领域还很陌生,所以我的技术词汇量可能不如大家。

我已经创建了 Windows 2016 服务器并成功安装了 OpenSSH SFTP 服务器。不幸的是,当我登录到我的 SFTP 用户时,我可以访问 C 盘中的所有文件夹。我谷歌了一下,发现这是因为没有对该用户设置限制。

我在 Google 上搜索了几个小时,找到了很多文章,但我还是感到很困惑。似乎 OpenSSH 没有一种简单的方法来控制文件夹限制以指定用户,并且有几种方法可以做到这一点 - 直接在 Windows 服务器中设置用户组策略(似乎找不到关于此的文章)、下载 Cygwin、使用其他 SFTP 服务器软件、使用 OpenSSH 服务器配置文件解决问题。坦率地说,我不知道该使用什么或遵循什么。

我的最终结果是允许 1 个用户对 FTP_Folder(根文件夹)下的文件夹有 1 个访问权限。例如,User1 只能访问 Site1 文件夹,而 User2 只能访问 Site2 文件夹。Site1 和 Site2 文件夹都存储在名为 FTP_Folder 的根文件夹中。

最好的方法是什么?

答案1

您很可能正在文件中搜索chroot等效内容。ChrootDirectory%programdata%\ssh\sshd_config

此指令仅支持 sftp 会话,在我看来,这正是您要找的。远程会话 (SSH) 进入服务器 ( cmd.exeoder powershell.exe) 将不是尊重这一点。

要设置仅 sftp 的 chroot 服务器,请设置ForceCommandinternal-sftp。您也可以通过实现仅允许 scp 和 sftp 的自定义 shell 来设置带有 chroot 的 scp。

为了简单起见:

  1. 创建一个 Windows 组,其中包含所有 SFTP 用户
  2. 确保该组有权访问您的目标目录
  3. 添加subsystem sftp internal-sftp到你的 sshd_config(或者更改它)
  4. 通过以下方式将新组限制到目录ChrootDirectorysshd_config

例如:

Match Group myfriendlyusergroup
    ChrootDirectory /myfriendlyusergroupshomedirectory
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

相关内容