问题描述
在尝试通过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支持以获取进一步的帮助和支持。
以上是解决权限被拒绝错误的一些常见方法。希望这些解决方案能帮助您解决问题。如果您有任何其他问题,请随时提问。