Ошибки разрешения при использовании gcsfuse от имени пользователя root на экземпляре Google Compute

В настоящее время мы пытаемся продемонстрировать облачную платформу Google для некоторых рабочих нагрузок, которые требуют много места для хранения. Мы пытаемся использовать облачное хранилище Google, но у нас возникают проблемы с монтированием блоков с помощью gcsfuse. В настоящее время я могу смонтировать свой тестовый контейнер как пользователь root (с установленной опцией allow_other), но не-root пользователи имеют доступ только для чтения.

Вещи, которые я пробовал и проверял:

  • установка точки монтирования на 777. Пермь перезаписывается при установке ковша.
  • пользователь показан в gcloud config list | grep account получил право владельца на это ведро
  • виртуальная машина, на которой я тестирую, имеет полный доступ API ко всем облачным сервисам Google

Вот вывод консоли - Catting и прикосновение к 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. Я не уверен, связано ли это с моей проблемой, но я хотел бы покопаться в этом, как только получу эту работу.

2 ответа

Решение

644 а также 755 являются разрешениями по умолчанию для всех файловых и каталогов inode в файловой системе gcsfuse. Вы можете использовать --file-mode а также --dir-mode флаги для управления ими. Смотрите здесь для документации.

Чтобы создать запись fstab на примере echdee, укажите атрибуты 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

Другие вопросы по тегам