Allowing permission using S3FS bucket directory for other users

s3fs

Solution

Permission was an issue with older versions of S3FS. Upgrade to latest version to get it working.

As already stated in the question itself and other answers, While mounting you will have to pass the following parameters: `-o allow_other`

Example:

s3fs mybucket:/ mymountlocation/ -o allow_other 

Also, before doing this ensure the following is enabled in `/etc/fuse.conf`:

user_allow_other

It is disabled by default ;)

Problem

I'm having problem using S3FS. I'm using ``` ubuntu@ip-x-x-x-x:~$ /usr/bin/s3fs --version Amazon Simple Storage Service File System 1.71 ``` And I have the password file installed in the `/usr/share/myapp/s3fs-password` with `600` permission. I have succeeded mounting the S3 bucket. ``` sudo /usr/bin/s3fs -o allow_other -opasswd_file=/usr/share/myapp/s3fs-password -ouse_cache=/tmp mybucket.example.com /bucket ``` And I have `user_allow_other` enabled in the `/etc/fuse.conf` When I tried creating a file in the bucket as `root` it worked. ``` ubuntu@ip-x-x-x-x:~$ sudo su root@ip-x-x-x-x:/home/ubuntu# cd /bucket root@ip-x-x-x-x:/bucket# echo 'Hello World!' > test-`date +%s`.txt root@ip-x-x-x-x:/bucket# ls test-1373359118.txt ``` I checked the bucket `mybucket.example.com`'s content and the file was successfully created. But I was having difficulties writing into the directory `/bucket` as different user. ``` root@ip-x-x-x-x:/bucket# exit ubuntu@ip-x-x-x-x:~$ cd /bucket ubuntu@ip-x-x-x-x:/bucket$ echo 'Hello World!' > test-`date +%s`.txt -bash: test-1373359543.txt: Permission denied ``` I desperately tried chmod-ing to `777` the `test-1373359118.txt`. And I can write into the file ``` ubuntu@ip-x-x-x-x:/bucket$ sudo chmod 777 test-1373359118.txt ubuntu@ip-x-x-x-x:/bucket$ echo 'Test' > test-1373359118.txt ubuntu@ip-x-x-x-x:/bucket$ cat test-1373359118.txt Test ``` Funnily, I could create a directory inside the bucket, set the chmod to `777`, and write a file there. ``` ubuntu@ip-x-x-x-x:/bucket$ sudo mkdir -m 1777 test ubuntu@ip-x-x-x-x:/bucket$ ls test test-1373359118.txt ubuntu@ip-x-x-x-x:/bucket$ cd test ubuntu@ip-x-x-x-x:/bucket/test$ echo 'Hello World!' > test-`date +%s`.txt ubuntu@ip-x-x-x-x:/bucket/test$ ls test-1373360059.txt ubuntu@ip-x-x-x-x:/bucket/test$ cat test-1373360059.txt Hello World ``` But then I tried ``` ubuntu@ip-x-x-x-x:~$ sudo chmod 777 /mybucket chmod: changing permissions of '/mybucket': Input/output error ``` It didn't work. Initially I was thinking to use this `/bucket` directory to store large and rarely accessed files from my LAMP stacks located several EC2 machines. (I think it's suitable enough to use this without making a special handling library using AWS PHP SDK, but that's not the point.) Because of that reason, I can settle using a directory inside the `/mybucket` to store the files. But I'm just curious if there is a way to allow entire `/mybucket` to other users?

Original source