web-dev-qa-db-ja.com

Google Computeインスタンスでroot以外のユーザーとしてgcsfuseを使用すると権限エラーが発生する

現在、大量のストレージを必要とする一部のワークロードについて、Googleクラウドプラットフォームのデモを試みています。 Googleクラウドストレージを使用しようとしていますが、gcsfuseを使用したバケットのマウントに問題があります。現在、(allow_otherオプションを設定して)rootユーザーとしてテストバケットをマウントできますが、root以外のユーザーには読み取りアクセス権しかありません。

私が試して確認したこと:

  • マウントポイントを777に設定します。バケットがマウントされると、権限が上書きされます。
  • gcloud config list | grep accountに表示されているユーザーには、このバケットの所有者アクセス権が付与されています
  • VMは、すべてのGoogle Cloudサービスへの完全なAPIアクセス権を持っています

これがコンソールの出力です。タイムスタンプを更新するために、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グループに追加された後でも、権限の問題が発生しました。それが私の問題に関連しているかどうかはわかりませんが、これが機能するようになったら、掘り下げてみたいと思います。

8
echdee

644755は、gcsfuseファイルシステム内のすべてのファイルとディレクトリのiノードのデフォルトの権限です。 --file-modeフラグと--dir-modeフラグを使用して、それらを制御できます。ドキュメントについては here を参照してください。

10
jacobsa

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

3
Phil Brammer