2013-08-07 43 views
2

使用S3FS和FUSE將S3存儲桶掛載到AWS EC2實例時,遇到了一個問題,即我的S3文件正在更新,但新文件並未「 t採取適當的許可。使用動態文件在EC2上掛載S3(s3fs) - 持久公共許可

新文件的ACL權限是「---------」而不是「rw-r - r--」。我已經確保了桶正確安裝方式:

sudo /usr/bin/s3fs -o allow_other -o default_acl="public-read" [bucketname] [mountpoint] 

和創建在/ etc/fstab中的自動掛載:

s3fs#[bucketname] [mountpoint]  fuse defaults,noatime,allow_other,uid=1000,gid=1000,use_cache=/tmp,default_acl=public-read 0 0 

和密碼文件/ etc/passwd文件,s3fs用正確的權限。

我的設置是Ubuntu 13.04,PHP5,AWS SDK。

經過2天的實驗,我在下面提供的答案中找到了一個解決方案(用於php)。

回答

6

在我的PHP腳本,提檔使用AWK SDK的PHP S3來,我只好在元數據中添加,如下圖所示,其中的伎倆:

$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 
    ) 
)); 

模式「33188」定義S3存儲桶中的權限「rw-r - r--」而不是「---------」(但僅反映在裝入EC2的文件夾中),後來由EC2裝入的驅動器繼承。

希望這可以幫助別人。讓我知道!

+0

如何這些權限是否會改變?我不明白這個數字的權限。 –

+1

這是一箇舊帖子,所以我會盡我所能回憶。我猜你熟悉權限0644(八進制)或「rw-r - r--」。 33188是十進制模式。模式包含文件類型及其權限,當您屏蔽文件類型時,您將獲得權限0644.請參閱http://stackoverflow.com/a/15059931/1140227和http://www.perlmonks.org/? NODE_ID = 985371 – George

0

s3fs#[bucketname] [掛載點]保險絲默認值,noatime的,allow_other,UID = 222,GID = 48,use_cache =/TMP,default_acl =公共讀0 0

對於我這種線工作wihtout設置X-AMZ-元模式! 處理: uid = 222用於我的服務器ec2-user 和gid = 48用於我的服務器apache組。

所有腳本php都是用apache組執行的。這就是爲什麼我認爲你需要把GID到48

也看到Change user ownership of s3fs mounted buckets