使用 WinSCP 复制文件:权限被拒绝

使用 WinSCP 复制文件:权限被拒绝

平台:Google 计算引擎

虚拟机实例:pytorch-最新-gpu-20190911

login 命令$ gcloud compute ssh jupyter@my-fastai-instance -- -L 8080:localhost:8080

为了节省 GCP 计费时间,我在本地机器上克隆了 fastai 课程 v3 和库,这使我能够进行非计算密集型操作,例如数据集创建等。

因此,在本地创建了几个数据集后,我尝试使用 WinSCP 将文件夹复制到我的 vm 实例。但我收到了“权限被拒绝”错误。经过多次挫折,我发现这是由于 /home 目录归“jupyter”所有。然后我使用 $sudo chown -R my-username ~/jupyter将所有权更改为我的用户名。这使我能够通过 WinSCP 将我的所有本地数据复制到 gce。但是当我尝试在 gce 中运行我的笔记本时,它们无法运行。为了运行它们,我不得不将所有权恢复为“jupyter”。

所以我的问题是:我怎样才能将 /home 所有者更改为 my_username,但仍允许 Jupyter 运行我的笔记本?这是 Jupyter 中的设置还是我需要做其他事情?我的目标是使用 WinSCP 自由传输文件,而无需更改目录的 jupyter 所有权。

答案1

WinSCP.net 已在文章中发布了有关要遵循的程序的详细描述
使用 SFTP 安全连接到 Google Compute Engine 服务器

这篇文章本身太长太详细了,不方便在此重现。简而言之,它描述了如何:

  • 生成你的私钥
  • 收集有关您的 GCE 实例的信息
  • 为您的 Google Compute 帐户设置 SSH 密钥
  • 设置 WinSCP 登录

答案2

从未在相同情况下起作用,但我猜想 jupyter 只是一个拥有主文件夹的典型用户。您可以将您的用户名添加到 jupyter 组,而不是获取所有权。

运行时,ls -l /home您可以看到用户文件夹的当前权限。例如:

ls -l /home | grep jupyter
drwxr-xr-x 13 jupyter jupyter   4096 Sep  8 10:26 jupyter

第一个jupyter是用户名,第二个jupyter是组名。您可以看到权限是:

  • rwx对于用户来说jupyter
  • r-x为团体成员jupyter
  • r-x对于其余用户来说。

在这种情况下,您可以将您的用户添加到组jupyter编辑中/etc/group/

jupyter:x:1001:bill

然后为该组添加适当的权限:

chmod -R g+w /home/jupyter

这基本上意味着“递归更改 /home/jupyter 中的权限以向组添加写入权限”。现在您应该看到如下权限:

ls -l /home | grep jupyter
drwxrwxr-x 13 jupyter jupyter   4096 Sep  8 10:26 jupyter

注意区别,现在 UGO 权限(用户、组、其他)是“drwxrxr-x'

相关内容