Using S3FS and FUSE to mount a S3 bucket to an AWS EC2 instance, I encountered a problem whereby my S3 files are being updated, but the new files doesn't adopt the proper permission.
The ACL rights that the new files had were "---------" instead of "rw-r--r--". I've ensured that the bucket is mounted properly by:
sudo /usr/bin/s3fs -o allow_other -o default_acl="public-read" [bucketname] [mountpoint]
and creating an automount in /etc/fstab:
s3fs#[bucketname] [mountpoint] fuse defaults,noatime,allow_other,uid=1000,gid=1000,use_cache=/tmp,default_acl=public-read 0 0
and password file in /etc/passwd-s3fs with the right permissions.
My setup is Ubuntu 13.04, PHP5, AWS SDK.
After 2 days of experimenting, I've found a solution (for php) in the provided answer below.
In my php script that PUT files to S3 using AWK SDK for PHP, I had to add in the meta data, as shown below, which did the trick:
$response = $s3->create_object('bucketname', 'mountpoint/'.$filename, array(
'body' => $json_data,
'contentType' => 'application/json',
'acl' => AmazonS3::ACL_PUBLIC,
'meta' => array(
'mode' => '33188', // x-amz-meta-mode
)
));
The mode "33188" defined the permissions "rw-r--r--" instead of "---------" in S3 bucket (but reflected only in the EC2 mounted folder), which was later inherited by the EC2 mounted drive.
Hope this helps someone. Let me know!
s3fs#[bucketname] [mountpoint] fuse defaults,noatime,allow_other,uid=222,gid=48,use_cache=/tmp,default_acl=public-read 0 0
For me this line work wihtout setting x-amz-meta-mode! take care of : uid=222 is for my server ec2-user and gid=48 is for my server apache group.
All the script php is executed with apache group. That's why i think you need to put the gid to 48.
来源:https://stackoverflow.com/questions/18094543/mount-s3-s3fs-on-ec2-with-dynamic-files-persistent-public-permission