Google-Cloud-Platform
在Google計算實例上使用 gcsfuse 作為非 root 使用者的權限錯誤
我們目前正在嘗試為一些需要大量儲存的工作負載展示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