微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

`gcloud compute copy-files`:复制文件时拒绝权限

我很难将文件复制到我的Google计算引擎。 我正在Google Compute Engine上使用ubuntu服务器

我是从我的OS Xterminal做到这一点,我已经使用gcloud授权。

local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.PHP example-instance:/var/www/html --zone us-central1-a Warning: Permanently added '<IP>' (RSA) to the list of kNown hosts. scp: /var/www/html/index.PHP: Permission denied ERROR: (gcloud.compute.copy-files) [/usr/bin/scp] exited with return code [1].

创build一个进程作为另一个用户运行

Symfony2caching重新创build – 写入权限失败

C#从“高级安全设置”获取“应用于”信息的目录

从本地networking访问wamp时出现禁止错误

在Windows XP上:如何创build一个只有一个特定目录的读取权限的用户

我怎样才能看到caspol认为一个代码段属于哪个区域?

内核模块执行中的不同权限

PHP exec()命令权限被拒绝

通过Gitolite和post-receive hook部署节点应用程序

我应该写一个临时文件临时目录吗? 或者写一个临时文件到最终目录?

在实例名称前插入root@

local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.PHP root@example-instance:/var/www/html --zone us-central1-a

这不起作用的原因是您的用户名不具有GCE VM实例的权限,因此无法写入/var/www/html/ 。

请注意 ,由于这个问题是关于Google Compute Engine虚拟机的,因此您不能以root身份直接将SSH直接连接到虚拟机,也不能以gcloud compute copy-files root身份直接复制文件,原因相同: gcloud compute copy-files使用依靠ssh进行身份验证的scp 。

可能的解决方案:

(也由Faizan在评论中提出),这个解决方案每次都需要两步

使用gcloud compute copy-files来传输用户可以写入的文件/目录,例如/tmp或/home/$USER

通过gcloud compute ssh或通过控制台上的SSH按钮登录到GCE VM,并使用sudo进行复制以获得适当的权限:

# note: sample command; adjust paths appropriately

sudo cp -r $HOME/html/* /var/www/html

这个解决方案是一些事先准备工作的一个步骤:

一次性设置:直接给你的用户名写入权限/var/www/html ; 这可以通过几种方式来完成; 这里有一个方法

# make the HTML directory owned by current user,recursively

sudo chown -R $USER /var/www/html

现在你可以运行复制一步:

gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.PHP example-instance:/var/www/html --zone us-central1-a

我使用bash脚本从本地机器复制到远程GCE机器上的可写目录; 然后使用ssh移动文件

SRC="/cygdrive/d/mysourcedir" TEMP="~/incoming" DEST="/var/my-disk1/my/target/dir"

您还需要设置GCE_USER和GCE_INSTANCE

echo "=== Pushing data from $SRC to $DEST in two simple steps" echo "=== 1) copy to a writable temp directoy in user home" gcloud compute copy-files "$SRC"/*.* "${GCE_USER}@${GCE_INSTANCE}:$TEMP" echo "=== 2) Move with 'sudo' to destination" gcloud compute ssh ${GCE_USER}@${GCE_INSTANCE} --command "sudo mv $TEMP/*.* $DEST"

在我的情况下,我不想chown目标目录,因为这会导致与其他脚本的其他问题…

UPDATE

gcloud compute copy-files已弃用

改用:

$ gcloud compute scp example-instance:~/REMOTE-DIR ~/LOCAL-DIR --zone us-central1-a

更多信息: https : //cloud.google.com/sdk/gcloud/reference/compute/scp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐