2013-07-09 9 views
7

S3FSを使用して問題が発生しています。私は 他のユーザーにS3FSバケットディレクトリを使用して許可を許可する

[email protected]:~$ /usr/bin/s3fs --version 
Amazon Simple Storage Service File System 1.71 

を使用していると私は 600許可を得て /usr/share/myapp/s3fs-passwordに設置されたパスワードファイルを持っています。

S3バケットの取り付けに成功しました。

sudo /usr/bin/s3fs -o allow_other -opasswd_file=/usr/share/myapp/s3fs-password -ouse_cache=/tmp mybucket.example.com /bucket 

そして、私はそれが働いたrootとしてバケット内のファイルを作成しようとしたとき、私はuser_allow_other/etc/fuse.conf

で有効になっています。

[email protected]:~$ sudo su 
[email protected]:/home/ubuntu# cd /bucket 
[email protected]:/bucket# echo 'Hello World!' > test-`date +%s`.txt 
[email protected]:/bucket# ls 
test-1373359118.txt 

私はバケツ mybucket.example.comの内容をチェックし、ファイルが正常に作成されました。

しかし、別のユーザーとして/bucketというディレクトリに書き込むことができませんでした。

[email protected]:/bucket# exit 
[email protected]:~$ cd /bucket 
[email protected]:/bucket$ echo 'Hello World!' > test-`date +%s`.txt 
-bash: test-1373359543.txt: Permission denied 

私は必死に777test-1373359118.txtにはchmod-INGのを試してみました。そして私は、私は、バケット内のディレクトリを作成777にchmodコマンドを設定して、そこにファイルを書き込むことができ、

[email protected]:/bucket$ sudo chmod 777 test-1373359118.txt 
[email protected]:/bucket$ echo 'Test' > test-1373359118.txt 
[email protected]:/bucket$ cat test-1373359118.txt 
Test 

Funnilyファイルに書き込むことができます。

[email protected]:/bucket$ sudo mkdir -m 1777 test 
[email protected]:/bucket$ ls 
test test-1373359118.txt 
[email protected]:/bucket$ cd test 
[email protected]:/bucket/test$ echo 'Hello World!' > test-`date +%s`.txt 
[email protected]:/bucket/test$ ls 
test-1373360059.txt 
[email protected]:/bucket/test$ cat test-1373360059.txt 
Hello World 

しかし、私はそれが動作しませんでした

[email protected]:~$ sudo chmod 777 /mybucket 
chmod: changing permissions of '/mybucket': Input/output error 

を試してみました。

最初に、この/bucketディレクトリを使用して、いくつかのEC2マシンにあるLAMPスタックから大量のアクセスの少ないファイルを保存することを考えました。 (AWS PHP SDKを使用して特別な取り扱いライブラリを作成せずにこれを使用するには十分だと思いますが、それはポイントではありません)

その理由のため、/mybucketのディレクトリを使用してファイルを保存します。 /mybucketさん全体を他のユーザーに推薦する方法があるのでは分かりません。

答えて

0

新しいプロジェクトRioFS(Userspace S3ファイルシステム)をご覧になることをお勧めします。https://github.com/skoobe/riofs

このプロジェクトは "s3fs"の代替案です。 "s3fs"と比較した主な利点は、シンプルさ、操作の速さ、バグのないコードです。現在のところthe projectは "テスト中"の状態ですが、いくつかの高負荷のファイルサーバー上でかなりの時間実行されています。

私たちは、より多くの人々がプロジェクトに参加し、テストに協力してほしいと考えています。私たちの側からは、迅速なバグを修正し、新しい機能を追加するというあなたの要求に耳を傾けます。あなたの問題について

、rootユーザーとしてRioFSを実行し、他のユーザーがマウントされたディレクトリへのR/Wアクセス権持つことができるようにするために:

  1. を確認/etc/fuse.confがuser_allow_otherオプションが含まれて作ります
  2. -o "allow_other"パラメータを指定してRioFSを起動します。

RioFSを起動するためのコマンドライン全体は次のようになります。

sudo riofs -c /path/to/riofs.conf.xml http://s3.amazonaws.com mybucket.example.com /bucket 

(あなたは両方AWSACCESSKEYIDAWSSECRETACCESSKEY変数をエクスポートまたはriofs.conf.xml設定ファイルでそれらを設定することを確認してください)。

あなたのお役に立てば幸いです。あなたのコミュニティへの参加を楽しみにしています!

+0

提案していただきありがとうございます。私はこれを最初に調べます。 –

1

同じ問題が発生したため、いくつかの理由が考えられますが、考えられる原因が列挙されています。あなたのファイルのパーミッションを見ると、 '---------' - パーミッション/ ACLが継承されている可能性があります。

この場合、ファイルのメタデータに「x-amz-meta-mode」を追加できます。動的に行う方法についてはmy postをチェックしてください。

+0

これは私の問題でした。私はちょうど 'chmod 777'でそれを解き放ちました。 –

6

これは私の作品:

s3fs ec2downloads:/ /mnt/s3 -o use_rrs -o allow_other -o use_cache=/tmp 

それは、最近のバージョンで修正されている必要があり、私はgithub projectから最新のクローン(1.78)を使用しています。

+3

私のために働かなかった。 :( – codersofthedark

0

あなたがhttpd_use_fusefsオプションを有効にする必要がCentOSのを使用している場合はそうでないに関係なく、あなたがs3fsオプションに与える何それはhttpdのを経由してアクセスする権限を持っていることはありません

setsebool -P httpd_use_fusefs on 
7

許可がS3FSの古いバージョンの問題ではなかったです。最新版にアップグレードしてください。有効になっている。また

s3fs mybucket:/ mymountlocation/ -o allow_other 

、これを行う前に、次の点を確認してください。-o allow_other

例:

はすでに取り付けている間、あなたが以下のパラメータを渡す必要があります、質問自体や他の回答に記載されています

user_allow_other 

これはデフォルトで無効になっています;)

/etc/fuse.conf
関連する問題