在 Google 计算实例上使用 gcsfuse 以非 root 用户身份出现权限错误

在 Google 计算实例上使用 gcsfuse 以非 root 用户身份出现权限错误

我们目前正在尝试演示 Google Cloud Platform 的一些需要大量存储的工作负载。我们正在尝试使用 Google Cloud Storage,但在使用 gcsfuse 安装存储桶时遇到问题。我目前能够以 root 用户身份安装我的测试存储桶(设置了 allow_other 选项),但非 root 用户只有读取权限。

我已尝试并检查过的事情:

  • 将挂载点设置为 777。挂载存储桶时,权限会被覆盖。
  • 显示的用户gcloud config list | grep account已被授予此存储桶的所有者访问权限
  • 我正在测试的虚拟机具有对所有 Google Cloud 服务的完整 API 访问权限

这是控制台输出 - Catting 和 touching animal.txt 来更新时间戳。

root@vm-00 cloud]# grep bucket /etc/fstab
test_bucket_00 /data/cloud/tb-00 gcsfuse  rw,allow_other
[root@vm-00 cloud]# mount tb-00
Calling gcsfuse with arguments: -o rw -o allow_other test_bucket_00 /data/cloud/tb-00
Using mount point: /data/cloud/tb-00
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.
[root@vm-00 cloud]# mount | grep bucket
test_bucket_00 on /data/cloud/tb-00 type fuse (rw,nosuid,nodev,allow_other,default_permissions)
[root@vm-00 cloud]# ls -lh /data/cloud/tb-00/animal.txt ; date ; touch/data/cloud/tb-00/animal.txt ; ls -lh /data/cloud/tb-00/animal.txt 
-rw-r--r--. 1 root root 20 Jan 21 00:24 /data/cloud/tb-00/animal.txt
Thu Jan 21 00:25:37 UTC 2016
-rw-r--r--. 1 root root 20 Jan 21 00:25 /data/cloud/tb-00/animal.txt
[root@vm-00 cloud]# cat /data/cloud/tb-00/animal.txt
ants bats cats dogs
[root@vm-00 cloud]# ls -lh /data/cloud
total 4.0K
drwxr-xr-x. 1 root root    0 Jan 21 00:25 tb-00
[root@vm-00 cloud]# chmod 777 /data/cloud/tb-00
[root@vm-00 cloud]# ls -lh /data/cloud
total 4.0K
drwxr-xr-x. 1 root root    0 Jan 21 00:25 tb-00
[root@vm-00 cloud]# gcloud config list
Your active configuration is: [NONE]
[core]
account = [email protected]
disable_usage_reporting = True
project = testing1-1148
[root@vm-00 cloud]#

现在,作为非 root 用户,我可以看到 animal.txt 的内容,但无法触摸该文件或在该目录中创建新文件。:

[testuser@vm-00 ~]$ cat /data/cloud/tb-00/animal.txt
ants bats cats dogs
[testuser@vm-00 ~]$ touch /data/cloud/tb-00/mineral.txt
touch: cannot touch `/data/cloud/tb-00/mineral.txt': Permission denied
[testuser@vm-00 ~]$ gcloud config list
Your active configuration is: [NONE]
[core]
account = [email protected]
disable_usage_reporting = True
project = testing1-1148

gcsfuse 是解决此问题的正确方法吗?或者是否有更好的解决方案来在系统范围内安装可用的 Google 云存储桶?我知道文档说不要以 root 身份安装存储桶,但我没有看到任何解释为什么这样做不好的内容。我尝试以非 root 用户身份安装,但遇到了权限问题,即使在将用户添加到 fuse 组后也是如此。我不确定这是否与我的问题有关,但一旦我让它工作起来,我很乐意深入研究它。

答案1

644755是 gcsfuse 文件系统中所有文件和目录 inode 的默认权限。您可以使用--file-mode--dir-mode标志来控制它们。请参阅这里用于文档。

答案2

要使用 echdee 的示例创建 fstab 条目,请使用下划线指定 gcsfuse dir-mode 和 file-mode 属性:

test_bucket_00 /data/cloud/tb-00 gcsfuse rw,allow_other,file_mode=777,dir_mode=777

https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/mounting.md

相关内容