AWS EC2 权限被拒绝 /usr/local/bin cURL

Posted

技术标签:

【中文标题】AWS EC2 权限被拒绝 /usr/local/bin cURL【英文标题】:AWS EC2 Permissions Denied /usr/local/bin cURL 【发布时间】:2016-11-18 19:57:42 【问题描述】:

我正在尝试遵循 this 文档并在我的 EC2 实例上安装 docker 机器。但是,curl 命令:

curl -L https://github.com/docker/machine/releases/download/v0.8.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine

退出并出现错误:

-bash: /usr/local/bin/docker-machine: 权限被拒绝

我尝试 curl 进入主目录,希望它会更改目录的权限,然后将其复制到目标,但它不起作用。

我怎样才能绕过这个?显然,ec2 用户在某些目录上缺乏 root 权限。

【问题讨论】:

假设您实际上想要覆盖任何现有的/usr/local/bin/docker-machine,您可以在命令前加上sudo(假设您有sudo 权限)。 因为这是 EC2 实例,所以我只有 ec2-user 访问权限。也就是说,我不确定在这种情况下如何成为 sudo。 你试过docs.aws.amazon.com/AmazonECS/latest/developerguide/…吗? 我已经安装了 docker。我需要添加由于某种原因丢失的 docker-machine。我也不想在容器中运行任何东西。 【参考方案1】:

-v 当给定-v(验证)选项时,sudo 将更新用户的缓存凭据,并在必要时验证用户的密码。 对于 sudoers 插件,这会将 sudo 超时再延长 5 分钟(或安全策略设置的任何超时时间)但是 不运行命令。并非所有安全策略都支持缓存 凭据。

ec2-user 默认在 sudoers 列表中。

[ec2-user ~]$ sudo -v
[ec2-user ~]$

试试这个:

sudo bash -c "curl -L https://github.com/docker/machine/releases/download/v0.8.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine"

如果你想让保存的文件成为所有人的可执行文件:

sudo chmod a+x /usr/local/bin/docker-machine

【讨论】:

您给出的命令有效。但是,由于我复制到那里的上一个目录的现有权限或由于此命令的结果,/usr/local/bin/docker-machine 上的权限是 -rw-r--r-- 因此,当我运行 docker-machine version 时,我仍然得到 -bash: /usr/local/bin/docker-machine: Permission denied 是有没有办法使用sudo bash -c更改权限? 谢谢@helloV!看起来我在追sudo -v 和这个。非常感谢! P.S.生活和学习......我从没想过sudo 命令有标志:-)

以上是关于AWS EC2 权限被拒绝 /usr/local/bin cURL的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 的 SSH 问题 - 权限被拒绝:公钥

AWS Amazon Linux EC2 实例:apache 用户权限被拒绝写入目录

即使使用新的 EC2 实例,AWS SSH 登录仍会继续失败 [权限被拒绝 (PublicKey)]

错误:EACCES:权限被拒绝,取消链接 '/usr/local/bin/npm

连接到 Amazon AWS:权限被拒绝

/usr/local/lib 的 OS X 权限被拒绝