J'ai des problèmes pour utiliser S3FS. j'utilise
ubuntu@ip-x-x-x-x:~$ /usr/bin/s3fs --version
Amazon Simple Storage Service File System 1.71
Et j'ai le fichier de mot de passe installé dans le /usr/share/myapp/s3fs-password
avec la permission 600
.
J'ai réussi à monter le godet S3.
Sudo /usr/bin/s3fs -o allow_other -opasswd_file=/usr/share/myapp/s3fs-password -ouse_cache=/tmp mybucket.example.com /bucket
Et j'ai user_allow_other
activé dans le /etc/Fuse.conf
Lorsque j'ai essayé de créer un fichier dans le compartiment sous la forme root
, cela a fonctionné.
ubuntu@ip-x-x-x-x:~$ Sudo su
root@ip-x-x-x-x:/home/ubuntu# cd /bucket
root@ip-x-x-x-x:/bucket# echo 'Hello World!' > test-`date +%s`.txt
root@ip-x-x-x-x:/bucket# ls
test-1373359118.txt
J'ai vérifié le contenu du bucket mybucket.example.com
et le fichier a été créé avec succès.
Mais j'avais des difficultés à écrire dans le répertoire /bucket
en tant qu'utilisateur différent.
root@ip-x-x-x-x:/bucket# exit
ubuntu@ip-x-x-x-x:~$ cd /bucket
ubuntu@ip-x-x-x-x:/bucket$ echo 'Hello World!' > test-`date +%s`.txt
-bash: test-1373359543.txt: Permission denied
J'ai désespérément essayé de chmod-ing pour 777
le test-1373359118.txt
. Et je peux écrire dans le fichier
ubuntu@ip-x-x-x-x:/bucket$ Sudo chmod 777 test-1373359118.txt
ubuntu@ip-x-x-x-x:/bucket$ echo 'Test' > test-1373359118.txt
ubuntu@ip-x-x-x-x:/bucket$ cat test-1373359118.txt
Test
Bizarrement, je pouvais créer un répertoire à l'intérieur du compartiment, définir le chmod sur 777
et écrire un fichier à cet endroit.
ubuntu@ip-x-x-x-x:/bucket$ Sudo mkdir -m 1777 test
ubuntu@ip-x-x-x-x:/bucket$ ls
test test-1373359118.txt
ubuntu@ip-x-x-x-x:/bucket$ cd test
ubuntu@ip-x-x-x-x:/bucket/test$ echo 'Hello World!' > test-`date +%s`.txt
ubuntu@ip-x-x-x-x:/bucket/test$ ls
test-1373360059.txt
ubuntu@ip-x-x-x-x:/bucket/test$ cat test-1373360059.txt
Hello World
Mais ensuite j'ai essayé
ubuntu@ip-x-x-x-x:~$ Sudo chmod 777 /mybucket
chmod: changing permissions of '/mybucket': Input/output error
Ça n'a pas marché.
Initialement, je pensais utiliser ce répertoire /bucket
pour stocker des fichiers volumineux et rarement utilisés à partir de mes piles LAMP situées sur plusieurs machines EC2. (Je pense qu'il est suffisant de l'utiliser sans créer de bibliothèque de traitement spéciale utilisant AWS PHP SDK, mais ce n'est pas le problème.)
Pour cette raison, je peux utiliser un répertoire dans le /mybucket
pour stocker les fichiers. Mais je suis juste curieux de savoir s'il existe un moyen d'autoriser l'intégralité du /mybucket
à d'autres utilisateurs?
L'autorisation était un problème avec les anciennes versions de S3FS. Mettez à niveau vers la dernière version pour le faire fonctionner.
Comme déjà indiqué dans la question et dans d’autres réponses, lors du montage, vous devrez passer les paramètres suivants: -o allow_other
Exemple:
s3fs mybucket:/ mymountlocation/ -o allow_other
Aussi, avant de faire cela, assurez-vous que ce qui suit est activé dans /etc/Fuse.conf
:
user_allow_other
Il est désactivé par défaut ;)
Cela fonctionne pour moi:
s3fs ec2downloads:/ /mnt/s3 -o use_rrs -o allow_other -o use_cache=/tmp
Il doit avoir été corrigé dans une version récente, j'utilise le dernier clone (1.78) du projet github .
Il peut y avoir plusieurs raisons, et j'énumère une raison possible car j'ai rencontré le même problème. Si vous examinez l’autorisation de votre fichier, il se peut qu’il ait hérité de «---------» - pas d’autorisation/ACL.
Si c'est le cas, vous pouvez ajouter le "x-amz-meta-mode" aux métadonnées du fichier. Allez voir mon post sur comment le faire/le faire dynamiquement.
Je voudrais recommander de jeter un coup d'oeil au nouveau projet RioFS (système de fichiers Userspace S3): https://github.com/skoobe/riofs .
Ce projet est une alternative «s3fs», les principaux avantages par rapport à «s3fs» sont les suivants: simplicité, rapidité des opérations et code sans bugs. Actuellement le projet est à l'état "testing", mais il est exécuté sur plusieurs serveurs de fichiers très chargés depuis un certain temps.
Nous recherchons plus de personnes pour rejoindre notre projet et aider avec les tests. De notre côté, nous proposons une correction rapide des bugs et écouterons vos demandes d’ajout de nouvelles fonctionnalités.
En ce qui concerne votre problème, pour pouvoir exécuter RioFS en tant qu'utilisateur root et autoriser d'autres utilisateurs à disposer des droits d'accès r/w au répertoire monté:
La ligne de commande complète pour lancer RioFS ressemblera à ceci:
Sudo riofs -c /path/to/riofs.conf.xml http://s3.amazonaws.com mybucket.example.com /bucket
(assurez-vous d’avoir exporté les variables AWSACCESSKEYID
et AWSSECRETACCESSKEY
ou de les définir dans le fichier de configuration riofs.conf.xml
).
J'espère que cela vous aidera et nous sommes impatients de vous voir rejoindre notre communauté!
si vous utilisez centos, vous devez activer l'option httpd_use_fusefs sinon, quoi que vous donniez pour l'option s3fs, il ne sera jamais autorisé à accéder via httpd
setsebool -P httpd_use_fusefs on