現在、大量のストレージを必要とする一部のワークロードについて、Googleクラウドプラットフォームのデモを試みています。 Googleクラウドストレージを使用しようとしていますが、gcsfuseを使用したバケットのマウントに問題があります。現在、(allow_otherオプションを設定して)rootユーザーとしてテストバケットをマウントできますが、root以外のユーザーには読み取りアクセス権しかありません。
私が試して確認したこと:
gcloud config list | grep account
に表示されているユーザーには、このバケットの所有者アクセス権が付与されていますこれがコンソールの出力です。タイムスタンプを更新するために、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ユーザーとしてマウントしようとしましたが、ユーザーがFuseグループに追加された後でも、権限の問題が発生しました。それが私の問題に関連しているかどうかはわかりませんが、これが機能するようになったら、掘り下げてみたいと思います。
644
と755
は、gcsfuseファイルシステム内のすべてのファイルとディレクトリのiノードのデフォルトの権限です。 --file-mode
フラグと--dir-mode
フラグを使用して、それらを制御できます。ドキュメントについては here を参照してください。
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