Как настроить разрешения между EFS и EC2

Я пытаюсь использовать CloudFormation для настройки экземпляра mongod с использованием хранилища EFS, и у меня возникают проблемы с пониманием того, как настроить разрешения файловой системы, чтобы он работал.

Никакие существующие системы не получат доступ к EFS, поэтому я могу настроить ее именно так, как мне нужно.

Я пытался использовать следующий пример AWS в качестве отправной точки ...

https://docs.amazonaws.cn/en_us/AWSCloudFormation/latest/UserGuide/aws-resource-efs-accesspoint.html

AccessPointResource:
Type: 'AWS::EFS::AccessPoint'
Properties:
  FileSystemId: !Ref FileSystemResource
  PosixUser:
    Uid: "13234"
    Gid: "1322"
    SecondaryGids:
      - "1344"
      - "1452"
  RootDirectory:
    CreationInfo:
      OwnerGid: "708798"
      OwnerUid: "7987987"
      Permissions: "0755"
    Path: "/testcfn/abc"

В приведенном выше примере кажется, что они назначили произвольную группу и идентификатор пользователя. То, что я пытаюсь выяснить, дано выше, как нужно настроить учетные записи пользователей на EC2, чтобы разрешить полный доступ для чтения / записи?

Я дошел до точки, где я могу смонтировать точку доступа, но мне не удалось успешно записать на нее.

Что я пробовал ...

Создал нового пользователя на EC2 и назначил uid и gid вот так ...

sudo usermod -u 13234 testuser1
sudo groupmod -g 1322 testuser1

Затем я sudo к этому пользователю и пытаюсь записать файл в точку монтирования ... Не повезло

Затем я попытался назначить uid и gid вот так ...

sudo usermod -u 7987987 testuser1
sudo groupmod -g 708798 testuser1

Опять не повезло с записью файла.

Что я действительно ищу, так это простейшую конфигурацию, в которой у меня может быть один пользователь EC2, имеющий полный доступ для чтения / записи к папке EFS. Это будет новый EFS и новый EC2, поэтому я полностью контролирую его настройку, если это поможет.

Возможно, в примерах предполагается наличие некоторых знаний о работе NFS, которых мне может не хватать.


person user1751825    schedule 16.09.2020    source источник


Ответы (1)


На всякий случай, если это кому-то поможет, в итоге я определил свою точку доступа вот так ...

   AccessPointResource:
    Type: 'AWS::EFS::AccessPoint'
    Properties:
      FileSystemId: !Ref FileSystemResource
      PosixUser:
        Uid: "9960"
        Gid: "9940"
      RootDirectory:
        CreationInfo:
          OwnerGid: "9940"
          OwnerUid: "9960"
          Permissions: "0755"
        Path: "/mongo-db"

а затем в моих пользовательских данных для сервера mongodb EC2 я добавил это ...

sudo groupadd --system --gid 9940 mongod
sudo useradd --system --uid 9960 --gid 9940 mongod

Я не совсем уверен, должны ли указанные выше gid и uid соответствовать тому, что я определил в AccessPoint, но, похоже, это упрощает задачу, поскольку тогда сервер покажет владельца файлов как mongod mongod.

Я смонтировал EFS вот так ...

sudo mkdir -p /mnt/var/lib/mongo
sudo sudo mount -t efs -o tls,accesspoint=${AccessPointId} ${FileSystemId}: /mnt/var/lib/mongo

Я все еще немного смущен исходным примером, предоставленным AWS. Если я правильно понимаю, кажется, что он всегда будет создавать корневой каталог, в который нельзя писать.

Возможно, кто-то сможет уточнить, где может быть полезно, чтобы корневой каталог принадлежал другому пользователю, а не указанному в PosixUser.

person user1751825    schedule 17.09.2020
comment
Спасибо, что поделился! это именно тот ответ, который я искал. - person Luis de Haro; 07.05.2021