6 апр. 2023 г.

S3 Linux



Для работы под Windows (и под Wine) есть бесплатная утилита - https://s3browser.com/
Требует .Net

Для работы под linux либо s3cmd - через команды, либо монтирование через FUSE - s3fs.


Установка - 
apt install s3cmd
apt install s3fs

Потом, для конфигурации s3cmd запускаем
s3cmd --configure 
Она интерактивно запрашивает все параметры, потом пишет их себе в ~/.s3cfg
Для монтирования через s3fs credentials в формате accessKeyId:secretAccessKey сохраняем в
* /etc/passwd-s3fs     [0640]
* $HOME/.passwd-s3fs   [0600]

Права нужны именно такие!
Если accessKeyId содержит двоеточие, то сохраняем credentials в ${HOME}/.aws/credentials
в формате 
[default]
aws_access_key_id=accessKeyId
aws_secret_access_key=secretAccessKey

Монтируем командой
s3fs имя_баскета /s3 -o url=https://частное.облако.ру -o allow_other
Без -o allow_other другие пользователи, кроме того, который монтировал, не смогут получить доступ, даже если сделать chown/chmod!!!
Имя баскета можно заранее посмотреть через
s3cmd la
В выводе команды имя баскета будет после s3:// первым словом.
Для монтирования при загрузке добавляем в /etc/fstab:
mybucket /path/to/mountpoint fuse.s3fs _netdev,allow_other 0 0
А вот как быть с url и credentials для частных облаков, если они не в /etc/passwd-s3fs а в ${HOME}/.aws/credentials пока не ясно.
Амазон берет и из Environment variables и из файла в профиле. System wide у Амазона нет вроде бы.
s3fs берет из амазонского конфига, но он в профиле пользователя, поэтому, вероятно в fstab не сработает.
s3fs#<название корзины> /mount/<путь к каталогу> fuse _netdev,allow_other,use_path_request_style,url=https://<Endpoint>>,passwd_file=/home/<имя пользователя>/.passwd-s3fs 0 0
s3fs#<имя бакета> /mount/<путь к папке> fuse _netdev,allow_other,use_path_request_style,url=http://storage.yandexcloud.net,passwd_file=/home/<имя пользователя>/.passwd-s3fs 0 0