AWS: s3fs – Permission denied

By | 11/22/2018
 

После начала использования s3fs – выяснилась одна деталь.

Файлы загружаются с помощью boto3.

Но после того, как корзина смонтирована к системе – получить доступ к файлам нельзя:

cp /mnt/projectname-idfa/projectname\ android\ purchase\ idfa.csv /tmp/
cp: cannot open '/mnt/projectname-idfa/projectname android purchase idfa.csv' for reading: Permission denied

Проверяем права на файлы – и ой:

ll /mnt/projectname-idfa/
total 730980
---------- 1 root    root     12688821 Nov 22 11:29 'projectname android install idfa.csv'
---------- 1 root    root       667425 Nov 22 11:29 'projectname android purchase idfa.csv'
---------- 1 root    root     60514676 Nov 22 11:28 'projectname ios install idfa.csv'
---------- 1 root    root      1637570 Nov 22 11:29 'projectname ios payment idfa.csv'
...

И сменить права через chmod тоже не получится:

sudo chmod 644 /mnt/projectname-idfa/projectname\ android\ purchase\ idfa.csv
chmod: cannot access '/mnt/projectname-idfa/projectname android purchase idfa.csv': Permission denied

Решение – задавать права доступа через Metadata, при загрузке данных в корзину. См. комментарий тут>>>.

Обновляем скрипт, добавляем ExtraArgs:

...
            _s3.meta.client.upload_file(out_file_name, os.environ['BUCKET_NAME'], out_file_name, \
                ExtraArgs={
                    "Metadata": {
                    "mode": "33204",
                    "uid": "1000",
                    "gid": "1000",
                },
            },)
...

Запускаем его, проверяем права на файлы теперь:

ll /mnt/projectname-idfa/
total 731040
-rw-rw-r-- 1 setevoy setevoy  12694741 Nov 22 12:17 'projectname android install idfa.csv'
-rw-rw-r-- 1 setevoy setevoy    667647 Nov 22 12:17 'projectname android purchase idfa.csv'
-rw-rw-r-- 1 setevoy setevoy  60524370 Nov 22 12:17 'projectname ios install idfa.csv'
...

Готово.