1

使用以下五行安装gcsfuse在全新的 Ubuntu14 实例上:

export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sudo apt-get update
sudo apt-get install gcsfuse

现在在本地磁盘上创建一个文件夹(该文件夹将用作 的挂载点Google Bucket)。授予此文件夹完全访问权限:

sudo mkdir /home/shared 
sudo chmod 777 /home/shared 

使用gcsfuse命令将 Google 存储桶安装到我们之前创建的安装点文件夹。但首先,列出链接到您的 Google 项目的 Google 存储桶的名称:

gsutil ls

我从事的 Google 项目有一个名为“my_bucket”的存储桶。知道存储桶名称后,我可以运行gcsfusemy_bucketBucket 安装到本地/home/shared安装文件夹的命令:

gcsfuse my_bucket /home/shared 

该命令的执行记录了它是成功的:

Using mount point: /home/shared
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.

但是现在当我尝试在映射的/home/shared安装点文件夹中创建另一个文件夹时,我收到错误消息:

mkdir /home/shared/test

错误:

mkdir: cannot create directory ‘/home/shared/test’: Input/output error

试图解决我成功un-mount使用的问题:

fusermount -u /home/shared

并将其映射回来,但现在使用另一个gcsfuse命令行:

mount -t gcsfuse -o rw,user  my_bucket /home/shared

但这会导致完全相同的权限问题。

最后,我尝试通过编辑/etc/fstab配置文件来解决此权限问题:

sudo nano /etc/fstab

然后在文件末尾附加一行:

my_bucket /home/shared gcsfuse rw,noauto,user

但它无助于解决这个问题。

需要进行哪些更改以允许所有用户完全访问映射的 Google 存储桶,以便用户能够创建、删除和修改存储在 Google 存储桶上的文件和文件夹?

4

2 回答 2

7

我看到了你的问题,因为我遇到了完全相同的问题,我也做了和你一样的步骤。让用户 root 完全控制已安装的云文件夹的解决方案:

您必须去您的 Google Cloude 位置,搜索“服务帐户”并单击它。 在此处输入图像描述

然后你必须导出你的服务帐户的密钥文件(.json)(我已经使用这个命令使用 Google Cloud Shell 控制台创建了一个新的服务帐户:gcloud auth application-default login 然后按照 shell 提示时的步骤操作。)

单击Create Key 并选择 JSON 在此处输入图像描述 将 .JSON 密钥文件上传到您的 linux 服务器。然后在您的 Linux 服务器上,运行以下命令:gcsfuse -o allow_other --gid 0 --uid 0 --file-mode 777 --dir-mode 777 --key-file /path_to_your_keyFile_that_you_just_uploaded.json nameOfYourBucket /path/to/mount

要查找您的 root 用户 GID 和 UID,请以 root 登录到您的服务器并在终端类型中输入:id -u root对于 UID 和id -g root对于 GID

希望我能帮上忙,因为我一直在苦苦挣扎,互联网上的任何资源都没有真正的帮助。干杯。

于 2017-04-20T18:27:34.173 回答
2

@Keytrap 给出的答案是正确的。但自 2017 年以来,gcsfuse 和 GCP 都在发展,并且有更多(可能更简单)的选项可以让 gscfuse 与 Google 帐户连接:

  1. 如果您在配置了完整存储范围的 Google Compute Engine 实例上运行,则 Cloud Storage FUSE 可以使用 Compute Engine 内置服务帐户。
  2. 如果您安装了 Google Cloud SDK 并运行了 gcloud auth application-default login,则 Cloud Storage FUSE 可以使用这些凭据。
  3. 如果您将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为服务帐号的 JSON 密钥文件的路径,则 Cloud Storage FUSE 将使用这些凭据。

资料来源:云存储 FUSE

于 2019-09-24T16:55:50.697 回答