我已经使用S3FS有一段时间了(自2010年以来),并且由于我需要使用"允许所有用户读/写"而卡在v1.61上。我将它用作"全局文件共享"(SAN),并在10多个服务器上挂载(/etc/fstab)相同的3个桶。不同的服务(用户)从它读取/写入,主要是Nginx/PHP-FPM (www-data with uid=33/gid=33),但也有automysqlbackup和git,所以使用"公共读写"访问挂载点是很方便的
我要做的是升级到最新的1.74版本(由于do VPS上的内存峰值,s3fs占用了500Mb内存中的480Mb),但文件权限有问题。我还发现,从1.74挂载的任何写入(目录和文件)都不会出现在1.61挂载上,所以我必须一次性升级服务器(这很好)
v1.61/etc/fstab config(其中一个挂载)
s3fs#s3fs-db.example.com /mnt/s3fs-db fuse use_cache=/tmp,allow_other 0 0
v1.74/etc/fstab config
s3fs#s3fs-db.example.com /mnt/s3fs-db fuse use_cache=/tmp,allow_other,default_acl=public-read-write,url=https://aws.amazon.com 0 0
注意:没有uid=和gid= yet
当1.74+挂载目录时,权限为drwxr-x-r-x
,当以root (/etc/fstab)挂载时,使得www-data用户无法写入目录。
问题:
- 有没有办法在1.74+版本上模拟1.61的功能…我似乎不知道如何获得正确的设置。Default_acl =public-read-write似乎是正确的方法。
- 我应该使用uid=和gid=,然后在我挂载它们之后在所有挂载点上执行chmod -R 777吗?我期待/etc/fstab为我做这个
- 我应该看s3ql或s3backer或riofs我正在做什么(SAN-ish)?
其他说明:
- 1.74+表示下面的2个链接
- https://github.com/s3fs-fuse/s3fs-fuse/archive/master.zip
- git clone https://github.com/s3fs-fuse/s3fs-fuse.git(现在可能是1.77 ?)
- url=https://aws.amazon.com似乎也坏了
谢谢,克里斯。
这里有几个不同的权限:
-
-o default_acl
控制S3服务器的访问控制。将其设置为public-read-write
将允许非s3fs工具读取和写入对象。 -
-o umask
允许在挂载点 内设置对象的掩码 -
-o mp_umask
允许设置挂载点目录 的掩码 -
-o allow_other
允许非挂载用户访问挂载路径,但不能访问 下面的对象
-o umask=0022
,这将允许其他用户读取文件,但不能写入文件。