2013-07-09 6 views
7

Mam problem z używaniem S3FS. UżywamZezwalanie na uprawnienia przy użyciu katalogu z zasobami S3FS dla innych użytkowników

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

I mam pliku haseł zainstalowanego w /usr/share/myapp/s3fs-password z 600 zgody.

Udało mi się zamontować łyżkę S3.

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

A ja user_allow_other włączona w /etc/fuse.conf

Kiedy próbowałem utworzeniu pliku w wiadrze jak root to działało.

[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 

Sprawdziłem wiadro mybucket.example.com „s zawartości i plik został utworzony.

Ale miałem trudności z zapisaniem do katalogu /bucket jako inny użytkownik.

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

rozpaczliwie próbował chmod-ing do 777test-1373359118.txt. I mogę pisać do pliku

[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 

Zabawne, mogę utworzyć katalog wewnątrz wiadra, ustaw chmod do 777 i zapisać plik istnieje.

[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 

Ale potem próbowałem

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

To nie działa.

Początkowo myślałem, aby użyć tego katalogu /bucket do przechowywania dużych i rzadko używanych plików z moich stosów LAMP zlokalizowanych na kilku maszynach EC2. (Wydaje mi się, że jest to wystarczające, aby użyć tego bez specjalnej biblioteki obsługi przy użyciu AWS PHP SDK, ale nie o to chodzi.)

Z tego powodu mogę rozliczać się za pomocą katalogu wewnątrz /mybucket, aby przechowywać pliki. Ale jestem ciekawy, czy istnieje sposób, aby umożliwić innym użytkownikom? Całkiem /mybucket?

Odpowiedz

0

Chciałbym polecić zapoznać się z nowym projektem RioFS (system plików przestrzeni użytkownika S3): https://github.com/skoobe/riofs.

Ten projekt jest alternatywą "s3fs", główne zalety w porównaniu do "s3fs" to: prostota, szybkość operacji i kod bezbłędny. Aktualnie the project znajduje się w stanie "testowanie", ale od dłuższego czasu działa na kilku obciążonych serwerach plików.

Poszukujemy chętnych do przyłączenia się do naszego projektu i pomocy przy testach. Z naszej strony oferujemy szybkie naprawianie błędów i będziemy słuchać Twoich próśb o dodanie nowych funkcji.

Odnośnie problemu, w celu uruchomienia RioFS jako użytkownik root i umożliwić innym użytkownikom mieć R/W prawo dostępu do zamontowanego katalogu:

  1. upewnić, /etc/fuse.conf zawiera opcję user_allow_other
  2. Uruchomić RioFS z parametrem -o "allow_other".

Cały wiersz poleceń, aby uruchomić RioFS będzie wyglądać następująco:

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

(upewnij się, że eksportowane zarówno AWSACCESSKEYID i AWSSECRETACCESSKEY zmienne lub ustawić je w riofs.conf.xml pliku konfiguracyjnego).

Mam nadzieję, że ci to pomoże i nie możemy się doczekać, kiedy dołączysz do naszej społeczności!

+0

Dzięki za sugestię. Zajrzę to w pierwszej kolejności. –

1

Może być kilka powodów i wymieniam możliwy powód napotkania tego samego problemu. Jeśli spojrzysz na uprawnienia do pliku, mógł on odziedziczyć "---------" - brak uprawnień/ACL.

W takim przypadku można dodać "x-amz-meta-mode" do metadanych pliku. Sprawdź na stronie my post, jak to zrobić/zrób to dynamicznie.

+0

to był mój problem - po prostu "chmod 777" go naprawiłam i zostałem odblokowany. –

6

Działa to dla mnie:

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

To musi być ustalony w ostatniej wersji, używam najnowszego klona (1,78) z github project.

+3

Nie działa dla mnie. :( – codersofthedark

0

jeśli używasz CentOS musisz włączyć httpd_use_fusefs opcję inaczej bez względu na to, co dajesz do opcji s3fs nigdy nie będzie miał pozwolenia na dostęp poprzez httpd

setsebool -P httpd_use_fusefs on 
7

Pozwolenie był problem ze starszymi wersjami S3FS . Przejdź na najnowszą wersję, aby działało.

Jak już wspomniano w samej i innych odpowiedzi pytanie Podczas montażu trzeba będzie przekazać następujące parametry: -o allow_other

Przykład:

s3fs mybucket:/ mymountlocation/ -o allow_other 

Ponadto, zanim ten sposób zapewniają, że jest włączona w /etc/fuse.conf:

user_allow_other 

jest domyślnie wyłączona;)

Powiązane problemy