实现逻辑目录 - AWS Transfer Family

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

实现逻辑目录

重要

根目录要求

  • 如果您未使用 Amazon S3 性能优化设置,则启动时必须存在根目录。

  • 对于 Amazon S3,这意味着创建一个以正斜杠 () / 结尾的零字节对象。

  • 为避免此要求,请考虑在创建或更新服务器时启用 Amazon S3 性能优化。

  • HomeDirectory 使用 LOGICAL 指定 a 时 HomeDirectoryType,该值必须映射到您的一个逻辑目录映射。该服务在用户创建和更新过程中都会对此进行验证,以防止配置失效。

逻辑主目录配置

使用 LOGICAL 作为您的时 HomeDirectoryType,请注意以下几点:

  • 该 HomeDirectory 值必须对应于您现有的逻辑目录映射之一。

  • 在用户创建和更新过程中,系统会自动对此进行验证。

  • 此验证可防止可能导致访问问题的配置。

启用逻辑目录

要为用户使用逻辑目录,请将HomeDirectoryType参数设置为LOGICAL。在创建新用户或更新现有用户时执行此操作。

"HomeDirectoryType": "LOGICAL"

chroot为用户启用

对于 chroot,创建一个由每个用户的单个 EntryTarget 配对组成的目录结构。Entry/代表根文件夹,而 Targ et 则指定存储桶或文件系统中的实际位置。

Example for Amazon S3
[{"Entry": "/", "Target": "/amzn-s3-demo-bucket/jane"}]
Example for Amazon EFS
[{"Entry": "/", "Target": "/fs-faa1a123/jane"}]

您可以像前面的示例一样使用绝对路径,也可以使用 ${transfer:UserName} 动态替换用户名,如下例所示。

[{"Entry": "/", "Target": "/amzn-s3-demo-bucket/${transfer:UserName}"}]

在前面的示例中,用户被锁定到其根目录,且无法在层次结构中向上移动。

虚拟目录结构

对于虚拟目录结构,只要用户的 IAM 角色映射有权访问它们,您就可以创建多个 Entry Target 配对,目标位于您的 S3 存储桶或 EFS 文件系统的任意位置,包括跨多个存储桶或文件系统。

在以下虚拟结构示例中,当用户登录 AWS SFTP 时,他们位于根目录中,子目录为/pics/doc/reporting、和。/anotherpath/subpath/financials

注意

除非您选择优化 Amazon S3 目录的性能(当您创建或更新服务器时),否则如果目录尚不存在,则用户或管理员需要创建这些目录。避免这个问题是考虑优化 Amazon S3 性能的理由。

对于 Amazon EFS,您仍然需要管理员来创建逻辑映射或/目录。

[ {"Entry": "/pics", "Target": "/amzn-s3-demo-bucket1/pics"}, {"Entry": "/doc", "Target": "/amzn-s3-demo-bucket1/anotherpath/docs"}, {"Entry": "/reporting", "Target": "/amzn-s3-demo-bucket2/Q1"}, {"Entry": "/anotherpath/subpath/financials", "Target": "/amzn-s3-demo-bucket2/financials"}]

注意

您只可以将文件上传到映射的特定文件夹。这意味着,在前面的示例中,您不能上传到 /anotherpathanotherpath/subpath 目录;仅限 anotherpath/subpath/financials。您也无法直接映射到这些路径,因为不允许重叠路径。

例如,假设您创建以下映射:

{ "Entry": "/pics", "Target": "/amzn-s3-demo-bucket/pics" }, { "Entry": "/doc", "Target": "/amzn-s3-demo-bucket/mydocs" }, { "Entry": "/temp", "Target": "/amzn-s3-demo-bucket2/temporary" }

您只可以将文件上传到这些存储桶中。当您首次通过 sftp 连接时,您会被放到根目录 / 中。如果您尝试将文件上传到该目录,则上传将失败。以下命令显示了一个示例序列:

sftp> pwd Remote working directory: / sftp> put file Uploading file to /file remote open("/file"): No such file or directory

要上传到任何 directory/sub-directory,必须将路径明确映射到 sub-directory

有关配置逻辑目录以及chroot为用户配置逻辑目录的更多信息,包括您可以下载和使用的 AWS CloudFormation 模板,请参阅 AWS 存储博客中的使用 chroot 和逻辑目录简化 AWS SFTP 结构