Permissions

對如何操作 GCS 儲存桶/對象權限感到困惑

  • November 22, 2021

在我的筆記型電腦上,我有一個目錄,其中包含一個子目錄,該子目錄又包含一堆 HTML 文件。它看起來像這樣:

% ls -lR 2000-09
2000-09:
total 12
drwxrwxr-x 2 skip skip 12288 Nov 18 07:42 html

2000-09/html:
total 648
-rw-r--r-- 1 skip skip 18489 Dec  4  2019 index.html
-rw-r--r-- 1 skip skip 18489 Dec  4  2019 maillist.html
-rw-r--r-- 1 skip skip  3468 Dec  4  2019 msg00000.html
-rw-r--r-- 1 skip skip  3270 Dec  4  2019 msg00001.html
-rw-r--r-- 1 skip skip  3194 Dec  4  2019 msg00002.html
...

我使用 gsutil 將該目錄上傳到我的儲存桶:

% gsutil -m cp -r 2000-09 gs://my-secret-bucket/
Copying file://2000-09/html/msg00070.html [Content-Type=text/html]...
Copying file://2000-09/html/msg00060.html [Content-Type=text/html]...           
Copying file://2000-09/html/msg00029.html [Content-Type=text/html]...           
Copying file://2000-09/html/msg00052.html [Content-Type=text/html]...           
...

通過控制台看起來不錯。我看到2000-09了,在那html裡面,在那一堆文件裡面。到現在為止還挺好。

現在我打開一個雲外殼並使用以下方法安裝該儲存桶gcsfuse

gcsfuse my-secret-bucket ~/mnt

但生成的目錄視圖顯示為空:

me@cloudshell:~ (whatever)$ ls -l ~/mnt
total 0
me@cloudshell:~ (whatever)$

然後我將幾個文件直接上傳到我的儲存桶中(在頂層)

% gsutil -m cp wrench?.jpg gs://my-secret-bucket/
Copying file://wrench1.jpg [Content-Type=image/jpeg]...
Copying file://wrench2.jpg [Content-Type=image/jpeg]...                         
/ [2/2 files][  1.0 MiB/  1.0 MiB] 100% Done                                    
Operation completed over 2 objects/1.0 MiB.

我確認它們在控制台中,然後再次列出我安裝的儲存桶。它們是可見的,我可以閱讀它們:

$ ls -l ~/mnt
total 1049
-rw-r--r-- 1 me me 432451 Nov 18 19:09 wrench1.jpg
-rw-r--r-- 1 me me 640526 Nov 18 19:09 wrench2.jpg
me@cloudshell:~ (whatever) cksum mnt/wrench1.jpg
3659533210 432451 mnt/wrench1.jpg
me@cloudshell:~ (whatever)$

似乎文件在頂層可見,但我不知道如何使目錄及其內容可見。對於像我這樣的老 Unix 人來說,Web 界面非常令人困惑,他們希望rw-r--r--在查看長列表時看到類似的東西,並chmod 0644 ...在看起來不正確時執行它。如何使我的 2000-09 對象/文件夾/目錄和(遞歸)其全部內容可見?最終,我希望它對 GCP 託管的 Flask Web 應用程序可見(也歸我所有,因此不一定公開可見)。

根據這個相關執行緒gcsfuse預設情況下可能不會顯示不是直接創建的目錄。我嘗試執行您描述的確切步驟,並且我的目錄從已安裝的文件夾中不可見(頂級文件確實顯示正確)。相同的答案解釋了使用--implicit-dirs標誌會更改此行為以顯示目錄。我使用該標誌創建了另一個掛載,並且從 Cloud Shell 中可以看到這些文件夾:

gcsfuse --implicit-dirs BUCKET_NAME ~/mountedDir

為了將儲存桶掛載到目錄上,我使用了gcsfuse 文件,其中詳細介紹了掛載過程。查看使用此標誌可能產生的副作用很重要,例如額外的 API 呼叫。

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