Google-Cloud-Platform

在Google計算實例上使用 gcsfuse 作為非 root 使用者的權限錯誤

  • February 5, 2017

我們目前正在嘗試為一些需要大量儲存的工作負載展示Google云平台。我們正在嘗試使用Google云儲存,但在使用 gcsfuse 安裝儲存桶時遇到問題。我目前能夠以 root 使用者身份安裝我的測試儲存桶(設置了 allow_other 選項),但非 root 使用者只有讀取權限。

我嘗試過並檢查過的事情:

  • 將掛載點設置為 777。 掛載儲存桶時會覆蓋 Perms。
  • 中顯示的使用者gcloud config list | grep account已獲得此儲存桶的所有者訪問權限
  • 我正在測試的 VM 具有對所有 Google Cloud 服務的完全 API 訪問權限

這是控制台輸出 - Catting and touch 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 = REDACTED1234-compute@developer.gserviceaccount.com
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 = REDACTED1234-compute@developer.gserviceaccount.com
disable_usage_reporting = True
project = testing1-1148

gcsfuse 是解決此問題的正確方法,還是有更好的解決方案可以在系統範圍內安裝Google云儲存桶?我知道文件說不要以 root 身份安裝儲存桶,但我沒有看到任何解釋它為什麼不好的東西。我嘗試以非 root 使用者身份掛載,但我遇到了權限問題,即使在將使用者添加到 fuse 組之後也是如此。我不確定這是否與我的問題有關,但一旦我開始工作,我很想深入研究。

644並且755是 gcsfuse 文件系統中所有文件和目錄 inode 的預設權限。您可以使用--file-mode--dir-mode標誌來控制它們。有關文件,請參見此處

要使用 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

引用自:https://serverfault.com/questions/750640