如何在具有完全访问权限的 Linux 实例上将 Google Bucket 挂载为本地磁盘

alp*_*ric 1 linux ubuntu google-compute-engine google-kubernetes-engine gcsfuse

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
Run Code Online (Sandbox Code Playgroud)

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

sudo mkdir /home/shared 
sudo chmod 777 /home/shared 
Run Code Online (Sandbox Code Playgroud)

使用gcsfuse命令 mount Google bucket 到我们之前创建的挂载点文件夹。但首先,列出与您的 Google 项目相关联的 Google Buckets 的名称:

gsutil ls
Run Code Online (Sandbox Code Playgroud)

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

gcsfuse my_bucket /home/shared 
Run Code Online (Sandbox Code Playgroud)

这个命令的执行记录它是成功的:

Using mount point: /home/shared
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.
Run Code Online (Sandbox Code Playgroud)

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

mkdir /home/shared/test
Run Code Online (Sandbox Code Playgroud)

错误:

mkdir: cannot create directory ‘/home/shared/test’: Input/output error
Run Code Online (Sandbox Code Playgroud)

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

fusermount -u /home/shared
Run Code Online (Sandbox Code Playgroud)

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

mount -t gcsfuse -o rw,user  my_bucket /home/shared
Run Code Online (Sandbox Code Playgroud)

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

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

sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)

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

my_bucket /home/shared gcsfuse rw,noauto,user
Run Code Online (Sandbox Code Playgroud)

但这并没有帮助解决这个问题。

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

Key*_*rap 7

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

您必须转到您的 Google Cloude 位置,搜索“服务帐户”并单击它。 在此处输入图片说明

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

单击创建密钥并选择 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

希望我有所帮助,因为我一直在努力奋斗,互联网上没有任何资源真正有帮助。干杯。