如何使用FUSE以适当的权限安装S3卷

时间:2013-04-17 20:35:07

标签: apache amazon-s3 ubuntu-12.04 fuse s3fs

我有一个需要在EC2实例(Ubuntu 12.04.2)上安装的Amazon S3存储桶(让我们称之为static.example.com)。我已经安装了s3fs。我能够安装音量,但我无法写入音量。我试过了:

sudo s3fs static.example.com -o use_cache=/tmp,allow_other,uid=33,gid=33 /mnt/static.example.com

然后我可以cd /mntls -la查看:

drwxr-xr-x  5 root     root      4096 Mar 28 18:03 .
drwxr-xr-x 25 root     root      4096 Feb 19 19:22 ..
lrwxrwxrwx  1 root     root         7 Feb 21 19:19 httpd -> /httpd/
drwx------  2 root     root     16384 Oct  9  2012 lost+found
drwxr-xr-x  1 www-data www-data     0 Jan  1  1970 static.example.com

这一切看起来不错,但是当我cd static.example.commkdir test时,我得到:

mkdir: cannot create directory `test': Permission denied

我实际创建目录或触摸文件的唯一方法是使用sudo强制它。但是,这不是一个可行的选择,因为我想从Apache将文件写入存储桶。我的Apache服务器以用户身份运行:group www-data。运行mount会产生:

s3fs on /mnt/static.example.com type fuse.s3fs (rw,nosuid,nodev,allow_other)

如何以允许我写入存储桶的方式安装此存储桶?

3 个答案:

答案 0 :(得分:5)

我是开源项目RioFS的首席开发人员和维护者:用于安装Amazon S3存储桶的用户空间文件系统。

我们的项目是“s3fs”项目的替代品,与“s3fs”相比的主要优点是:简单,操作速度和无错误代码。目前the project处于“beta”状态,但它已经在几个高负载文件服务器上运行了相当长的一段时间。

我们正在寻找更多人加入我们的项目并帮助进行测试。在我们这边,我们提供快速错误修复,并会听取您添加新功能的请求。

关于您的问题:

如果您使用RioFS,则可以使用以下命令挂载存储桶并具有写入权限(假设您已安装RioFS并已导出AWSACCESSKEYID和AWSSECRETACCESSKEY环境变量):

riofs  -o allow_other http://s3.amazonaws.com bucket_name /mnt/static.example.com

(请参阅命令行参数的项目描述)

请注意,该项目仍处于开发阶段,可能仍有一些漏洞。

如果您发现某些内容无效,请填写project's GitHub page上的问题报告。

希望它有所帮助,我们期待着您加入我们的社区!

答案 1 :(得分:1)

这对我有用:

sudo s3fs bucketname /mnt/folder -o allow_other,nosuid,use_cache=/mnt/foldercache

如果您需要调试,只需添加,f2 -f -d

sudo s3fs bucketname /mnt/folder -o allow_other,nosuid,use_cache=/mnt/foldercache,f2 -f -d

答案 2 :(得分:-1)

使用S3Backer尝试此方法:

mountpoint/
    file       # (e.g., can be used as a virtual loopback)
    stats      # human readable statistics

了解更多关于它的信息: http://www.turnkeylinux.org/blog/exploring-s3-based-filesystems-s3fs-and-s3backer