在 cygwin 中锁定 SFTP 用户

在 cygwin 中锁定 SFTP 用户

我设置了一个用户来 ssh 到 Windows Server 2008 R2。

我能够更改默认目录。

我唯一无法弄清楚的是如何限制用户只能进入该目录。

换句话说,我不希望用户能够更改目录。

请指教。

编辑:

我的立场是这样的:

  • Cygwin 安装
  • James在 Windows 中创建的用户 ( )
  • 在 Windows 中创建的组(SftpUser)
  • SftpUser未显示在 /etc/passwd 中
  • 詹姆斯是某个None团体的成员
  • 我可以用我的用户登录
  • cygdrivedev列出了目录(我不想要这个)
  • cygdrive是空的


以下是场景

我希望JamessftpUser群组限制在其上传文件夹中。路径位于外部驱动器上:

D:\uploads\james_folder\

在 cygwin 中

/cygdrive/d/uploads/james_folder/

我不介意限制

/home/james/upload

然后将目录挂载在主路径下,但似乎 cygwin 没有与 samba 捆绑在一起。

sshd_配置

Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp

答案1

我最近在 cygwin 上设置了 SFTP,我意识到我们无法隐藏以下目录:

  • /cygdrive
  • /dev

您可能知道 /path/to/sftp 必须由 root 拥有,并且任何其他用户或组都无法写入,您需要将 /etc/passwd 中的用户 ID 更新为 0,因为 Windows 中没有 root 概念。

如果您将用户限制在非 cygdrive(例如 /sftp)中,您将只能看到 /cygdrive(/cygdrive 下不会出现任何内容)。

如果您将用户限制在 cygdrive(例如 /cygdrive/d/.../sftp)中,您将看到 /cygdrive/d。但是,如果您正确设置,则无法更改任何父目录。

希望以上信息对您有帮助!


请检查以下事项:

  1. 确保 /etc/passwd 中当前登录用户(示例中为 james)的用户 ID 为零。这是因为 cygwin 会将 root 下所有目录的用户更改为当前登录用户。请运行命令ls -l /进行验证。
  2. 确保 /home、/home/james、/home/james/upload 为当前用户所有(即相当于用户 ID 为 0 的 root 所有)。
  3. 确保 /etc/sshd_config 包含:

    Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp
    

答案2

你需要ChrootDirectorysshd_配置

ArchLinux 的详细说明请参见SFTP chroot

基本概要如下:

1)添加chroot配置如下sshd_confg

Match User username
ChrootDirectory /home/%u
ForceCommand internal-sftp

2)使用以下命令更改 chroot 目录权限:

chown root.root /home/<user>
usermod -d / <user>

3)使用类似以下方法修复authorized_keys的路径:

AuthorizedKeysFile      %h/.ssh/authorized_keys

A邮政在 cygwin 邮件列表中报告使用此方法成功限制了与上述类似的配置的访问。

相关内容