为什么我在上传到AWS Transfer Family SFTP服务器时会出现权限被拒绝的错误

78次阅读
没有评论

问题描述

在尝试通过AWS Transfer Family访问AWS Elastic File System时,遇到了权限被拒绝的问题。他已经创建了一个启用了sFTP协议并且有一个用户的传输家族。他能够从本地机器连接到服务器。他可以列出对象并更改目录以查看服务器上的所有内容,并使用get命令下载文件。但是,当他尝试使用put命令上传文件时,出现了以下错误:

sftp> put help.yml Uploading help.yml to /fs-00ea2499d59477cb1/help.ymlremote open("/fs-00ea2499d59477cb1/help.yml"): Permission denied

用户感到困惑的是,如果他对来自Transfer Family的EFS的读访问权限正常工作,那么写访问权限也应该正常工作,因为分配给他的IAM角色非常通用。它允许对所有EFS资源进行所有访问。用户在经过大量调试后得出了这个策略。用户意识到这样的宽松策略并不理想。
用户的IAM信任关系:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

用户sFTP用户的IAM角色附加的IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "elasticfilesystem:*",
            "Resource": "*"
        }
    ]
}

用户想知道他在这里做错了什么?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据您提供的信息,您的IAM策略似乎是正确的,并且您的IAM角色具有对EFS资源的所有访问权限。因此,问题可能是与EFS挂载点的权限设置有关。
请确保您的EFS挂载点具有正确的权限设置,以允许您的IAM角色具有写入权限。您可以按照以下步骤检查和更改EFS挂载点的权限设置:
1. 登录到AWS管理控制台并导航到EFS服务页面。
2. 选择您的EFS文件系统。
3. 在“权限”选项卡下,检查您的挂载点的权限设置。
4. 确保您的IAM角色具有写入权限。您可以通过添加适当的IAM角色或用户到权限列表中来实现这一点。
5. 如果您的IAM角色已经在权限列表中,请确保它具有正确的写入权限。
6. 如果您的IAM角色不在权限列表中,请添加它并授予适当的写入权限。
7. 保存更改并尝试再次上传文件。

方案2

如果您的EFS挂载点的权限设置正确,并且您仍然遇到权限被拒绝的问题,那么可能是由于其他原因导致的。您可以尝试以下步骤来进一步调试和解决问题:
1. 检查您的IAM角色是否具有足够的权限来执行上传操作。您可以尝试为IAM角色添加更具体的权限,例如elasticfilesystem:ClientWrite
2. 检查您的IAM角色是否与Transfer Family的用户正确关联。确保您的IAM角色是Transfer Family用户的角色。
3. 检查您的IAM角色是否具有正确的信任关系。确保您的IAM角色的信任关系与您提供的IAM信任关系匹配。
4. 检查您的IAM角色是否具有正确的策略附加。确保您的IAM角色附加了与您提供的IAM策略匹配的策略。
5. 如果您仍然无法解决问题,请尝试重新创建Transfer Family和IAM角色,并确保正确配置和关联它们。

如果您仍然无法解决问题,请参考AWS文档或联系AWS支持以获取进一步的帮助和支持。

以上是解决权限被拒绝错误的一些常见方法。希望这些解决方案能帮助您解决问题。如果您有任何其他问题,请随时提问。

正文完